sqlite - 获取重复的输出并且与另一列不同
问题描述
示例数据库:
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)
解决方案
第一个 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
[作者注] 这不是最初写的答案。堆栈帮助重新:编辑说:
预计编辑将是大量的,并且使帖子比您发现的更好。编辑的常见原因包括:
- 修正语法和拼写错误
- 澄清帖子的含义(不改变含义)
- 包含仅在评论中发现的附加信息,因此与帖子相关的所有信息都包含在一个位置
- 纠正小错误或随着帖子的年龄添加更新
- 添加相关资源或超链接
编辑不符合任何条件。但是,在同一页面上它说:
如果您对您的贡献由其他受信任的用户协作编辑的想法感到不满意,那么这可能不适合您。
随它吧。
推荐阅读
- php - 为什么 wp core install 说表'wp_options'不存在
- c# - nint 与 int 的区别
- node.js - 如何在没有任何事件的情况下使用 react-router-dom 打开页面?
- angular - Angular i18n - 反向提取翻译到源代码?
- c++ - 调用从 noexcept 函数抛出异常的函数
- gtk - Xwt.GtkBackend 中缺少 DLL
- firebase - 未找到 MediaQuery 小部件祖先。相关的导致错误的小部件是 FutureBuilder
- tensorflow - AlreadyExistsError:已存在另一个同名指标。在 colab 中
- security - 他们是否有任何安全、强大的工具可用于执行芹菜任务的监控和通知警报?
- java - 将自定义 Confluence 插件从版本 5 升级到 7+