Mysql SQL-是否有方法检测某个值是否不存在于按其他列的值分组的列中?
我有一张这样的桌子:Mysql SQL-是否有方法检测某个值是否不存在于按其他列的值分组的列中?,mysql,sql,database,group-by,db2,Mysql,Sql,Database,Group By,Db2,我有一张这样的桌子: Name Toys present A1 ------ Dinosaur-1 A1 ------ Dinosaur-2 A1 ------ Dinosaur-3 A1 ------ Dinosaur-1 A1 ------ Dinosaur-5 A2 ------ Dinosaur-1
Name Toys present
A1 ------ Dinosaur-1
A1 ------ Dinosaur-2
A1 ------ Dinosaur-3
A1 ------ Dinosaur-1
A1 ------ Dinosaur-5
A2 ------ Dinosaur-1
A2 ------ Dinosaur-2
A2 ------ Dinosaur-3
A3 ------ Dinosaur-2
A3 ------ Dinosaur-2
A3 ------ Dinosaur-2
A4 ------ Dinosaur-3
A4 ------ Dinosaur-3
A5 ------ Dinosaur-1
A5 ------ Dinosaur-1
A5 ------ Dinosaur-1
是否有一个值可以返回没有任何“恐龙1”玩具的名称?
在上面的示例中,这将是“A3”和“A4”。我很难过滤出一个可能有多个玩具的名字是否有这个特定的玩具或有。我尝试过分组和有条款,也尝试过使用CTE,但没有成功
请给我建议,谢谢 您可以按
名称
分组,并对没有玩具
名为恐龙-1'
的组进行筛选,如下所示:
select name
from mytable
group by name
having max(toy = 'Dinosaur-1') = 0
当MySQL在数值上下文中对表达式toy='恐龙-1'
求值时,返回0
表示false,返回1
表示true;因此,最大值0
表示组中没有行满足该条件
注意:如果您正在运行DB2(也标记了DB2),则可以将having
子句更改为:
having max(case when toy = 'Dinosaur-1' then 1 else 0 end) = 0