如何从select实例中删除第二个和更多重复项(因此只有select实例中的第一个记录应该保存,其他应该删除)。
我尝试使用GROUP BY:http://sqlfiddle.com/#!9/26fda8/2
但我不知道它是如何运作的。在此示例中,GROUP BY始终保存ID = 1的记录。当我将查询从:ORDER BY id DESC
更改为:ORDER BY id ASC
时,它仍然只返回第一条记录,其他记录将被删除,因此我无法恢复使用GROUP BY因为我无法使用ORDER管理GROUP BY。是否有可能永远删除第二个和更多重复项(因此只应保存第一个记录)?这应该与ORDER一起使用。
感谢。
答案 0 :(得分:1)
试试这个
- 保留最大ID并删除剩余的重复记录
SELECT * from table_test where id in
(
select max(id) FROM `table_test` GROUP BY `filter_id`
)
OR
- 保留最小ID并删除剩余的重复记录
SELECT * from table_test where id in
(
select min(id) FROM `table_test` GROUP BY `filter_id`
)