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

发布于 2024-12-25 01:58:34 字数 714 浏览 1 评论 0原文

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

如果我有这个:

------------
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

Sort of the reverse of finding duplicate rows. I have a table with a bunch of columns, and I want to find where data isn't the same in two columns. So...

If I have this:

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

I want to find this:

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

But if I have this:

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

I want to find this:

Empty set

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

诠释孤独 2025-01-01 01:58:34

如果我们可以假设您也有一个唯一的 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
)

If we can assume you have a unique id column also, you can do something like

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
)
尴尬癌患者 2025-01-01 01:58:34

如果用户想要选择大于 1 的值,则此方法有效。但是,如果用户想要选择一个空值(如果 Col2 具有大于 1 的相同值),则此查询将不起作用。

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

this works if the user wants to select a value of greater than 1. but if the user want to have an empty if Col2 has the same value greater than 1, this query won't work.

SELECT * FROM
         (SELECT DISTINCT Col1, Col2 FROM tableName) as iQuery
WHERE iQuery.Col2 > 1
鯉魚旗 2025-01-01 01:58:34

您可以使用:

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

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

You can use:

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

This solution will return duplicated records, as requested in the last comment from the question owner.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文