本文目錄一覽:
請問在mysql中如何刪除 兩個欄位相同的數據?
delete
from
dede_archives
where
[標題]=[標題]
and
[作者]=[作者]這個應該是不行的。我是要把重複的刪除。但是要保留一條。比如有兩篇文章。他們的作者
和標題相同的。那麼這一般是重複的文章。所以我想把一篇刪除。保留一篇。因為數據比較多。所以要用sql語句執行。大家幫忙想想怎麼弄。是dedecms
裡面主鍵盤應該只是id號碼。大家幫忙一下啊。
mysql 根據兩個欄位值查詢時如何去除重複數據
假設表名為test:
select * from (select *, concat(name,code) as __f from test order by date desc) __t group by __f;
mysql如何去除兩個欄位數據相同的記錄
MySQL查詢重複欄位,及刪除重複記錄的方法
資料庫中有個大表,需要查找其中的名字有重複的記錄id,以便比較。如果僅僅是查找資料庫中name不重複的欄位,很容易:
SELECT min(`id`),`name` FROM `table` GROUP BY `name`;
但是這樣並不能得到說有重複欄位的id值。(只得到了最小的一個id值)查詢哪些欄位是重複的也容易:
SELECT `name`,count(`name`) as count FROM `table` GROUP BY `name` HAVING count(`name`) 1 ORDER BY count DESC;
但是要一次查詢到重複欄位的id值,就必須使用子查詢了,於是使用下面的語句。
SELECT `id`,`name` FROM `table` WHERE `name` in (
SELECT `name`
FROM `table`
GROUP BY `name` HAVING count(`name`) 1);
但是這條語句在mysql中效率太差,感覺mysql並沒有為子查詢生成零時表。於是使用先建立零時表:
create table `tmptable` as (
SELECT `name`
FROM `table`
GROUP BY `name` HAVING count(`name`) 1);
然後使用多表連接查詢:
SELECT a.`id`, a.`name` FROM `table` a, `tmptable` t WHERE a.`name` = t.`name`;
結果這次結果很快就出來了。
========================
查詢及刪除重複記錄的方法
(一)
1、查找表中多餘的重複記錄,重複記錄是根據單個欄位(peopleId)來判斷
select * from people
where peopleId in (select peopleId from people group by peopleId having count(peopleId) 1)
2、刪除表中多餘的重複記錄,重複記錄是根據單個欄位(peopleId)來判斷,只留有rowid最小的記錄
delete from people
where peopleId in (select peopleId from people group by peopleId having count(peopleId) 1)
and rowid not in (select min(rowid) from people group by peopleId having count(peopleId )1)
3、查找表中多餘的重複記錄(多個欄位)
select * from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) 1)
4、刪除表中多餘的重複記錄(多個欄位),只留有rowid最小的記錄
delete from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)1)
5、查找表中多餘的重複記錄(多個欄位),不包含rowid最小的記錄
select * from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)1)
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/153994.html