sql - 如果引用父 ID 的所有子项都已选择值,则返回父 ID

标签 sql select subquery

我在工作中遇到了一些奇怪的情况。我需要确定表中引用其父级的所有项目以及具有特定值的项目。例如

id  | parentID | fieldValue
---------------------------
123    null      null
  124    123       2
  125    123       2
126    null      null
  127    126       2
  128    126       1

鉴于上面的示例,如果我的子选择要搜索 fieldValue 为“2”的所有子项,我只希望返回 ID 123,因为 126 有一个值为 1 的子项。

目标是:

HasParentID 不为空,如果所有其他子项的字段值 = 2,则返回parentID。

最佳答案

您可以按parentID分组并在having子句中设置条件:

select parentID
from tablename
group by parentID
having count(distinct fieldValue) = 1 and max(fieldValue) = '2'

关于sql - 如果引用父 ID 的所有子项都已选择值,则返回父 ID,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61182658/

相关文章:

用于按字段分组的 MySQL 子查询

sql - MySQL - 如何 GROUP BY 另一个查询的结果?

sql - 将一串 ids 转换为一串等效名称

sql - 将纪元转换为时间戳时获取不正确的日期

sql - 分区表查询仍在扫描所有分区

Mysql数据库选择关系

php - 在表单提交之前使用下拉列表的选定值

sql - 从 View 中删除行是否会从基表 - MySQL 中删除行?

postgresql - Sequelize设置时区查询

jpa - 元组结果标准 API 子查询