我有一个看起来像这样的表:
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
是否有一个值可以返回没有“ Dinosaur-1”玩具的名字? 在上面的示例中,这将是“ A3”和“ A4”。我很难筛选可能包含多个玩具的名称是否具有此特定玩具。我尝试了Group By和Haveing子句,也曾与CTE一起玩,但是没有运气。
请告知并谢谢。
答案 0 :(得分:2)
您可以按name
分组并过滤没有toy
的{{1}}的分组,如下所示:
'Dinosaur-1'
表达式select name
from mytable
group by name
having max(toy = 'Dinosaur-1') = 0
,当MySQL在数字上下文中求值时,返回toy = 'Dinosaur-1'
代表假,返回0
代表真;因此最大值1
表示该组中没有行满足条件。
注意:如果您正在运行DB2(也已对其进行了标记),则可以将0
子句更改为:
having