mysql从表中删除共有2列或更多列的行

时间:2012-10-03 10:51:27

标签: mysql sql

我需要从表中删除共有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)

2 个答案:

答案 0 :(得分:1)

DELETE FROM tableName
WHERE col1 NOT IN
(
    SELECT minID
    FROM 
    (
        SELECT MIN(ID) minID
        FROM tableName
        GROUP BY col2, col3
    ) a
)

See SQLFiddle Demo

答案 1 :(得分:0)

经过一番研究后我发现了这个(我觉得它在堆栈上的某个地方也不记得帖子了)

  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 )