- mysql靴姿,表a刪除重復項(根據(jù)id2判斷重復),僅保留id1最小的一條,表a還有個條件睛藻,id3=4,sql怎么寫
您可以使用以下SQL語句來刪除表a中的重復項邢隧,僅保留id1最小的一條:
DELETE t1 FROM a t1
INNER JOIN a t2 ON t1.id2 = t2.id2 and t1.id3=4 AND t1.id1 > t2.id1;
這條語句使用了自連接和內聯(lián)結合來找到重復項店印,并且只保留id1最小的一條數(shù)據(jù)。
- 可以使用子查詢
當然倒慧,您也可以使用子查詢來完成這個任務按摘。以下是使用子查詢的SQL語句來刪除表a中的重復項,僅保留id1最小的一條:
DELETE FROM a
WHERE id1 NOT IN (SELECT MIN(id1) FROM a WHERE id3 = 4 GROUP BY id2)
AND id3 = 4;
這條語句使用子查詢找到每個id2對應的最小id1纫谅,然后利用NOT IN子句來刪除除了最小id1之外的其他記錄炫贤。
- 可以使用HAVING COUNT(*)來刪除重復項
當然,您可以使用HAVING COUNT(*)來刪除重復項付秕,同時保留id3=4的條件兰珍。以下是使用HAVING COUNT(*)的SQL語句:
DELETE FROM a
WHERE id1 NOT IN (
SELECT MIN(id1)
FROM a
WHERE id3 = 4
GROUP BY id2
HAVING COUNT(*) > 1
)
AND id3 = 4;
這條語句使用子查詢找到每個id2對應的最小id1,并且通過HAVING COUNT(*) > 1篩選出有重復項的id2询吴。然后掠河,利用NOT IN子句刪除除了最小id1之外的其他記錄,并且在主查詢中加上id3 = 4的條件以滿足您的要求猛计。