これを行う 1 つの方法は、 を使用してサブクエリでテーブルを結合することLEFT JOIN
です。サブクエリは、ID
すべての最低を取得しますUID
。サブクエリでレコードが一致しない場合は、一致するレコードがなく、安全に削除できることを意味します。
DELETE a
FROM TableName a
LEFT JOIN
(
SELECT uid, MIN(ID) min_ID
FROM TableName
GROUP BY uid
) b ON a.uid = b.uid AND
a.ID = b.min_ID
WHERE b.uid IS NULL
ただし、のレコードにUID
異なる名前を付けることができる場合はname
、group by
句に含める必要があります。そうしないuid
と、最下位の一意のみID
が残ります。
DELETE a
FROM TableName a
LEFT JOIN
(
SELECT uid, MIN(ID) min_ID, name
FROM TableName
GROUP BY uid, name
) b ON a.uid = b.uid AND
a.ID = b.min_ID AND
a.name = b.name
WHERE b.uid IS NULL