我希望删除所有具有重复条目的行,并且不希望保留每个行中的单个行。我希望删除所有有重复条目的条目。在这里,我引用了一些代码,这些代码将保持最高或最低的id值。这里的所有查询都将保留来自重复记录的一个条目。
我尝试过的Mysql查询是
DELETE * ,count(*)as n FROM cart by rfid HAVING n>1DB设计:
ID(PK)|RFID |CATAGORY
1 |1 |5
2 | 1 | 5
3 | 2 | 4
4 |3 | 6 输出:
ID(PK)|RFID|CATAGORY
2 | 1 | 5
3 | 2 | 4
4 |3 | 6 预期结果:
ID(PK)|RFID|CATAGORY
3 | 2 | 4
4 |3 | 6 发布于 2018-05-02 11:12:54
选择不同和最古老的条目(注释:使用MIN(),假设id是自动增量模式和PK),只需切换到MAX(),以保留最新的。
SELECT MIN(id) FROM cart group by rfid;(删除前面选择中没有的所有内容)。
DELETE FROM cart where id NOT in (SELECT MIN(id) FROM cart group by rfid);由于无法为FROM子句中的update指定目标表(在本例中为DELETE),所以上面的内容无法工作,但是您可以通过一个子subselect来遍历它,所以最后的工作查询是:
DELETE FROM cart WHERE id NOT IN (SELECT MIN(A.id) FROM (SELECT * FROM cart) A group by A.rfid);编辑(删除具有count>1的所有条目)
DELETE FROM cart WHERE id IN(
SELECT A.id FROM (SELECT * FROM cart) A where A.rfid IN
(SELECT B.rfid from (SELECT * FROM cart) B group by B.rfid having count(B.rfid)>1)
);发布于 2018-05-02 15:17:45
DELETE cart.* FROM cart INNER JOIN (SELECT rfid,catagory FROM cart GROUP BY rfid,catagory HAVING COUNT(*)>1) dup ON cart.rfid = dup.rfid AND cart.`catagory` = dup.`catagory` 这个查询解决了我的problem.thank u
https://stackoverflow.com/questions/50131375
复制相似问题