sql - 如何提取组出现超过一定次数的行
问题描述
我有下表
col1 col2 col3 key
A B C 1
A B B 2
A B B 3
A B D 4
B D C 5
我想提取组 col1、col2、col3 在表中多次出现的行。
A B B 2 A B B 3
到目前为止,我有:
SELECT col1, col2, col3, count(*)
FROM db.table
GROUP BY col1, col2, col3
HAVING count(*) > 1
col1 col2 col3 count(*) A B B 2
有没有办法用 ABB 提取这些行,而不必将最终表与初始表连接起来?
解决方案
您可以使用存在逻辑:
SELECT col1, col2, col3, "key"
FROM yourTable t1
WHERE EXISTS (SELECT 1 FROM yourTable t2
WHERE t2.col1 = t1.col1 AND t2.col2 = t1.col2 AND
t2.col3 = t1.col3 AND
t2."key" <> t1."key");
推荐阅读
- python - 是否可以像使用 Java 的 Eclipse 一样在 Python 中使用 Pycharm 浏览函数?
- excel - 从另一个工作表的主列表中填充 Excel 工作表中的数据
- google-sheets - 比较查询中的数据行为异常
- python - 我想从内容字符串中提取特定模式:“ Twitter for iPhone ”
- sql - 如何从孩子 ID 中让父母达到 5 级层次结构
- ffmpeg - 如何使 mpv 与 mininterpolate 等 ffmpeg 过滤器更兼容?
- jquery - 更改所有href,使其原生网址显示在网站上
- python - Python 以太坊区块链交易
- python-3.x - 从 json 文件 python 中读取 (x,y) 值对
- javascript - 如何修复“对象可能未定义”?