查找MySQL中任何两列不唯一的行?

时间:2012-01-03 00:44:46

标签: mysql select

查找重复行的反向排序。我有一个包含一堆列的表,我想找到两列中数据不同的地方。所以......

如果我有这个:

------------
col1 | col2
------------
  A  |  1
------------
  A  |  1
------------
  A  |  2
------------
  B  |  1
------------
  B  |  1
------------
  B  |  3
------------
  B  |  1
------------

我想找到这个:

------------
col1 | col2
------------
  A  |  1
------------
  A  |  2
------------
  B  |  1
------------
  B  |  3
------------

但如果我有这个:

------------
col1 | col2
------------
  A  |  1
------------
  A  |  1
------------
  B  |  1
------------
  B  |  1
------------
  B  |  1
------------

我想找到这个:

Empty set

3 个答案:

答案 0 :(得分:0)

如果我们可以假设您还有一个唯一的ID列,则可以执行类似

的操作
select *
from the_table t
where not exists (
    select 0
    from the_table t2
    where t.col1 = t2.col1
    and t.col2 = t2.col2
    and t.id < t2.id
)

答案 1 :(得分:0)

如果用户想要选择大于1的值,则此方法有效。但如果用户希望在Col2具有大于1的相同值时为空,则此查询将无效。

SELECT * FROM
         (SELECT DISTINCT Col1, Col2 FROM tableName) as iQuery
WHERE iQuery.Col2 > 1

答案 2 :(得分:-1)

您可以使用:

Select col1, col2
From tablename
Group by col1, col2
Having count(*) >  1;

此解决方案将根据问题所有者的最后一条评论中的请求返回重复记录。

相关问题