sql - 如何获取此 sql 查询
问题描述
大家好,我对这个查询有疑问,我需要获取 id 具有相同数字的行:
id2 | num
----+------
28 | 6
28 | 104
28 | 106
50 | 6
50 | 104
预期结果:
id2 | num
----+-----
28 | 6
28 | 104
50 | 6
50 | 104
结果不包括28 106
,因为没有50 106
.
案例2:
id2 | num
----+-----
29 | 1
30 | 1
31 | 1
预期结果:
id2 | num
----+-----
29 | 1
30 | 1
31 | 1
检索所有,因为所有 id 的 num 都等于 1
这些数字是随机的,条件是如果有两个以上的 id,它们在第 2 列中必须具有相同的数字
解决方案
一种方法是计算每个num
值的出现次数,并将其与值的数量进行比较DISTINCT id2
。如果它们相同,则num
每个值都会出现该id2
值。然后,您可以SELECT
从表中匹配这些num
值的行:
SELECT *
FROM data
WHERE num IN (SELECT num
FROM data
GROUP BY num
HAVING COUNT(*) = (SELECT COUNT(DISTINCT id2) FROM data))
ORDER BY id2, num
输出(对于第一个数据集):
id2 num
28 6
28 104
50 6
50 104
输出(用于第二个数据集):
id2 num
29 1
30 1
31 1
推荐阅读
- mysql - 双数据库可能性(Firebase 和虚拟主机服务)
- bokeh - Bokeh 自定义 JS 回调的目的
- python - Python - py_compile 没有输出
- postgresql - 对两个表列之间的匹配字符串进行性能调整
- php - Node Crypto createHmac() 输出是否与具有相同输入的 PHP hash_hmac() 输出不同?
- session - 我在 Laravel 中使用自定义日志制作了项目。现在会话自动退出
- python - 计算特定列的增量时间
- php - 在亚马逊网络服务中为 codeigniter 功能运行 cron 作业
- c++ - 如何找出 CUDA/OpenCV 程序返回纯灰色图像的原因?
- c# - 在 .NET Core 的 Web 请求中使用 NTLM 身份验证