我想从数据库中删除具有相同名称的行。我检查了 Stackoverflow 并发现了类似这样的内容:
DELETE
FROM my_table mt1 USING my_table mt2
WHERE mt1.my_name = mt2.my_name AND mt1.unique_id<mt2.unique_id;
Run Code Online (Sandbox Code Playgroud)
这当然有效,但会留下一行。我有一个请求:
如果存在重复行,我必须删除所有行(不留一个)。
我们可以使用GROUP BYwithHAVING子句作为子查询:
DELETE
FROM my_table
WHERE my_name IN
(SELECT
my_name
FROM
my_table
GROUP BY
my_name
HAVING
COUNT(*) > 1);
Run Code Online (Sandbox Code Playgroud)
尝试一下:db<>fiddle