gpt4 book ai didi

mysql - 如何分组并检查组是否包含 2 个或更多给定值?

转载 作者:行者123 更新时间:2023-11-29 09:41:04 25 4
gpt4 key购买 nike

我有一个包含建筑物名称的表,例如 A、B、C。这些建筑物名称可以重复。我还有另一根有地板的柱子。例如 1 楼、2 楼。同样,每个建筑物可以有多个 1 楼。第三列有电视、砖 block 、风扇等物体。我想检查建筑物与相应楼层的每种组合,例如 A 楼 - 1 楼,A 楼 - 2 楼,如果对象“砖”存在,则“墙”一定存在。

示例数据:对于每个建筑物和位置,如果 'WALL' 存在,则 'WINDOW'、'WINDOW1' 或 'WINDOW2' 必须存在,否则 FLAG

BUILDING  LOCATION  OBJECT   
A FLOOR1 WINDOW1
A FLOOR1 WINDOW
A FLOOR1 WINDOW2
A FLOOR2 WALL
B FLOOR1 WALL
C FLOOR1 WALL
C FLOOR1 WINDOW

期望的输出

BUILDING  LOCATION  ACTION    
A FLOOR2 FLAG
B FLOOR1 FLAG

我尝试过使用 GROUP BY、DISTINCT、WHERE EXISTS,但我似乎无法想出正确的逻辑。

最佳答案

不存在:

select distinct t.building, t.location, 'FLAG' action
from tablename t
where object = 'WALL'
and not exists (
select 1 from tablename
where building = t.building and location = t.location
and object like 'WINDOW%'
)

请参阅demo .
结果:

| building | location | action |
| -------- | -------- | ------ |
| A | FLOOR2 | FLAG |
| B | FLOOR1 | FLAG |

关于mysql - 如何分组并检查组是否包含 2 个或更多给定值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56604355/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com