不确定我是否在标题中清楚地描述了上下文 但给出了两张表的情况
A|B
1|1
1|2
2|3
2|4
3|5
4|6
5|7
5|8
B|C
1|NULL
2|1
3|NULL
4|NULL
5|NULL
6|2
7|3
8|4
输出的条件是A的值出现1次以上, 而对应的 B 值在 C 中不都是 NULL(B 中至少有 1 个 C 值不为 NULL)
A符合上表条件的应该是1和5 重复 A 的计数的预期输出为 2
最佳答案
以下内容应该会有所帮助。
select t.a,count(t.a),count(t2.c)
from t
join t2
on t.b=t2.b
group by t.a
having count(t.a)>1
and count(t2.c)>=1
这里我将表 t 和 t2 连接到 b 列上 之后,我检查表 t 中的 col-a 有多少记录 >1,以及 t2 中的 col c 有多少记录 > 1。
仅供引用,count(null) 将为零),因此 t2.c 中的任何非空值都将具有 count(t2.c)>=1
完整演示
https://dbfiddle.uk/?rdbms=sqlserver_2017&fiddle=6d56b0ed8bafe09786342a6bfb58b8d2
关于mysql - 显示另一个表中另一个对应属性不为空的重复值的聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53348297/