共通の列が 2 つ以上あるテーブルから行を削除する必要があります。例のために。最後の 2 列が同じ行を削除する必要があるとしましょう。
1 1 2 3
2 2 2 2
3 2 3 3
4 7 3 3
5 4 2 2
最初の列はインデックスです。
4 7 3 3 と 5 4 2 2 を削除する必要があります (既に 2 2 2 2 と 3 2 3 3 があるため)
DELETE FROM tableName
WHERE col1 NOT IN
(
SELECT minID
FROM
(
SELECT MIN(ID) minID
FROM tableName
GROUP BY col2, col3
) a
)
いくつかの調査の後、私はこれを見つけました(スタックのどこかにあったと思いますが、投稿を思い出せません)
SELECT * FROM tb AS t1
WHERE EXISTS (
SELECT 1 FROM tb AS t2
WHERE t2.c0= t1.c0
AND t2.c1= t1.c1
AND t2.c2= t1.c2
AND t2.id> t1.id )