首页 > 解决方案 > 获取重复的输出并且与另一列不同

问题描述

示例数据库:

column1 | column2
--------+---------
1       |  1
2       |  1
3       |  3
4       |  3
5       |  5
6       |  7
7       |  3

我想得到一个输出

2 | 1
4 | 3
7 | 3

这是我使用的查询:

SELECT 
    column2, COUNT(*) c 
FROM 
    table 
GROUP BY 
    column2 
HAVING 
    c > 1 

返回:

1 | 2
3 | 3

我想更进一步:

SELECT * 
FROM table 
WHERE (column1 != column2 AND having count(*) > 1)

标签: sqliteduplicates

解决方案


第一个 SQL

SELECT column2, COUNT(*) c 
FROM table 
GROUP BY column2 
HAVING c > 1 

返回您想要的 column2 值的漂亮列表。您将需要一个 self-JOIN 并获得相应的 column1。这将需要使用表别名。你可以这样试试

SELECT T1.column1, T1.column2 
from table T1
JOIN (SELECT column2, count(*) c
      FROM table
      GROUP BY column2
      HAVING c > 1) T2 ON T2.column2 = T1.column2
WHERE T1.column1 <> T2.column2 


[作者注] 这不是最初写的答案。堆栈帮助重新:编辑说:

预计编辑将是大量的,并且使帖子比您发现的更好。编辑的常见原因包括:

  • 修正语法和拼写错误
  • 澄清帖子的含义(不改变含义)
  • 包含仅在评论中发现的附加信息,因此与帖子相关的所有信息都包含在一个位置
  • 纠正小错误或随着帖子的年龄添加更新
  • 添加相关资源或超链接

编辑不符合任何条件。但是,在同一页面上它说:

如果您对您的贡献由其他受信任的用户协作编辑的想法感到不满意,那么这可能不适合您。

随它吧。


推荐阅读