当前位置: 首页 > 知识库问答 >
问题:

选择所有子级仅包含相同值而不包含其他方案的行

柯乐童
2023-03-14

我正在编写一个查询来选择所有行,其中所有子行只包含相同的值,而不包含其他场景。

尝试了很多网上的例子,没有匹配。

从所有子级仅包含相同值而没有其他方案的表中选择*。必须包含至少一个要返回的子级。

  • 子级通过ID映射到父级。
  • 子值为一列,可以为int或null。假设所有子级必须包含值5,而不包含任何其他值。如果大多数子级都包含5,则将不起作用,则必须是所有子级都只有5的家长。
  • 父级可能有多个子级
  • 父级可能没有子级(在这种情况下,不包括在结果中)

家长示例

A(id: 1), B(id: 2), C(id: 3), D(id: 4), E(id: 5).
children id mapping: AAA, BB, CCCCC, E
children values: 
A:5, A:5, A:3
B:5, B:null
C:5, C:5, C:5, C:5, C:5
E:null

那么唯一返回的父级是C,因为C的所有子级只包含5。

你会看到A不起作用,因为A的一个子代包含一个3,并且所有子代都必须是5。您会看到B没有返回,因为B的一个子项包含null而不是所有的5。

共有1个答案

宫高义
2023-03-14

假设您的数据结构是:

parentid   childid   value

然后您可以对聚合执行您想要的操作:

select parentid
from t
group by parentid
having min(value) = max(value) and  -- all values are the  same
       min(value) = 5               -- and that value is 5

如果value可以为null并且您希望避免这种情况,则还应包括:

 count(value) = count(*)
 类似资料:
  • 问题内容: 如何在mysql中选择仅包含大写字符的字段或不包含任何小写字符的字段? 问题答案: 您可能需要使用区分大小写的排序规则。我相信默认值不区分大小写。例: 然后: 如果您不想在整个表中使用区分大小写的排序规则,则也可以使用其他答案中建议的@kchau子句。 让我们尝试使用不区分大小写的排序规则的表: 这不能很好地工作: 但是我们可以使用子句将名称字段整理为区分大小写的整理:

  • 问题内容: 如果我有一张桌子 如何通过task_id获取分组的行,该行的状态仅为NULL。在这种情况下,只有具有task_id 2的行。 问题答案: 执行,以返回仅具有空状态的task_id。

  • 问题内容: 在SQL Server 2005中,我有一个包含订单ID和产品ID的订单详细信息表。我想编写一条sql语句,查找具有特定订单内所有项目的所有订单。因此,如果订单5包含项1、2和3,则我希望所有其他订单也具有1、2和3。此外,如果订单5具有2次两次和3次一次,则我希望所有其他订单具有两个2和一个3。 我的偏爱是它返回完全匹配的订单,但是,如果这样更容易执行/性能更好,则可以接受超集订单。

  • 问题内容: 我正在尝试跟踪商业建筑的项目(特别是混凝土覆层)。 一个项目可以有多个街区(一个街区是一个独立的建筑物) 一个街区可以有多个高程(建筑面;北,东等) 海拔高度可以有多个楼层(高层建筑) 地板可以有许多面板(面板是混凝土外墙的一部分) 为了使在数据库中构建面板时可以更轻松地进行跟踪,我希望能够复制一个块(由于10个块中有9个,因此每个块都是相同的,只是做了较小的更改) 就桌子而言- 积木

  • 问题内容: 我有一个嵌套的可排序列表,可以动态添加或删除项目,并且可以嵌套n级。嵌套时,会将新的ul元素注入选择为父元素的li元素中。列表的初始状态如下所示: 我正在使用MooTools进行排序等,并且工作正常,但是在排序时正确重置位置文本时遇到了麻烦。我尝试使用的每个CSS选择器还包括 所有 子项,而不仅仅是列表中的li元素,而不是子列表中的所有li元素。假设除id,position和text之

  • 在构建了问题实现之后,当运行OptaPlanner时,我遇到了这个问题: 我读过这里的问题,但没有对象是。我修改了类,它是Edge,以实现,在此之前,我尝试重写方法,结果相同: 为了更好地澄清问题,我的类是这样实现的: 规划问题是这样的:我有几个分离的树结构,每个树的根节点有一个就绪时间,这取决于所有的提供者节点。我想让所有根节点的时间相等,树的每条边都有一个缓冲区,可以修改大小来改变父节点的时间