mysql - 显示另一个表中另一个对应属性不为空的重复值的聚合

标签 mysql sql

不确定我是否在标题中清楚地描述了上下文 但给出了两张表的情况

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/

相关文章:

java - "Error starting ApplicationContext"执行spring应用时

php - 如何在 SQL 或 PHP 中计算持续时间日期

Mysql查询将两个条件合并为一行

php - 在 OOP php 中获取查询错误

mysql - SQL - JOIN 和比较不同表中的两行有什么区别?

mysql - MySQL中如何将不同表中的部分行相互匹配?

mysql - 按国家代码对用户排序

mysql - 创建表、查询和表之间的关系

sql - 哪个最快,1x 插入 512 行,4x 插入 128 行,或 512x 插入 1 行

mysql - Sequelize 使用 MySQL 抛出断言错误