Mysql SQL查询语句自联接?
SQL新手 我有以下一组数据Mysql SQL查询语句自联接?,mysql,sql,select,group-by,Mysql,Sql,Select,Group By,SQL新手 我有以下一组数据 A X Y Z 1 Wind 1 1 2 Wind 2 1 3 Hail 1 1 4 Flood 1 1 4 Rain 1 1 4 Fire 1 1 我想选择所有不同的“A”字段,其中包含A的所有行都有洪水和雨水 因此在本例中,查询将只返回数字4,因为对于包含A=4的所有行的集合,我们有Flood和Rain 我需要A的值,其中对于A中的给定值“A”,存在带
A X Y Z
1 Wind 1 1
2 Wind 2 1
3 Hail 1 1
4 Flood 1 1
4 Rain 1 1
4 Fire 1 1
我想选择所有不同的“A”字段,其中包含A的所有行都有洪水和雨水
因此在本例中,查询将只返回数字4,因为对于包含A=4的所有行的集合,我们有Flood和Rain
我需要A的值,其中对于A中的给定值“A”,存在带有“A”的行,该行必须包含以下提供的所有字段(在示例Flood and Rain中)
如果您需要进一步的澄清,请告诉我
我需要A的值,其中对于A中的给定值“A”,存在带有“A”的行,该行必须包含以下提供的所有字段(在示例Flood and Rain中)
您可以使用聚合,并使用having
子句进行筛选:
select a
from mytable t
where x in ('Flood', 'Rain') -- either one or the other
having count(*) = 2 -- both match
如果元组(a,x)
元组不是唯一的,那么您希望具有count(distinct x)=2
。您应该使用count(distinct x)组,并具有
计数(不同…)避免出现X值两倍相同的情况
select A
from my_table
WHERE x in ('Flood', 'Rain')
group A
having count(distinct X) = 2