我有一个像这样的表:
uid | name | user_id
--------------------
1 | aaa | 111
2 | bbb | 111
3 | ccc | 222
4 | aaa | 222
5 | vvv | 333
6 | zzz | 333
7 | aaa | 111
8 | bbb | 111
我想编写一个查询,它会删除所有名称aaa
,但留下一次aaa
。
输出如下:
uid | name | user_id
--------------------
1 | aaa | 111
2 | bbb | 111
3 | ccc | 222
4 | aaa | 222
5 | vvv | 333
6 | zzz | 333
可以通过查询吗?
最佳答案
DELETE a
FROM table tbl
LEFT JOIN
(
SELECT user_id, MIN(uid) min_uid, name
FROM table
GROUP BY user_id, name
) tbl1 ON tbl.user_id = tbl1.user_id AND
tbl.uid = tbl1.min_uid AND
tbl.name = tbl1.name
WHERE tbl1.user_id IS NULL
您必须比较名称和 uid 才能删除所有重复值。
关于mysql - 删除所有值并留下一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15499992/