car*_*tor 11 sql sybase group-by
col1 col2
A bear
A dog
A cat
B bear
B dog
B cat
C dog
C cat
D bear
D dog
D cat
E bear
E dog
E cat
F dog
F cat
Run Code Online (Sandbox Code Playgroud)
如果我想选择至少有一行的所有col1值col2 = 'bear',我可以这样做:
SELECT col1
FROM mytable
WHERE col1 IN ('A','B','C')
GROUP BY col1
HAVING col2 = 'bear'
Run Code Online (Sandbox Code Playgroud)
这将返回A和B.
但我想只选择col1中没有行的值 col2 = 'bear'
我在想NOT HAVING,但这似乎不起作用.
有任何想法吗?谢谢!
Joe*_*lli 10
SELECT m1.col1
FROM mytable m1
WHERE NOT EXISTS(SELECT NULL
FROM mytable m2
WHERE m2.col1 = m1.col1
AND m2.col2 = 'bear')
AND m1.col1 IN ('A', 'B', 'C')
Run Code Online (Sandbox Code Playgroud)
小智 8
你也可以使用这个技巧:
SELECT col1
FROM mytable
WHERE col1 IN ('A','B','C')
GROUP BY col1
HAVING SUM(CASE col2 WHEN 'bear' THEN 1 ELSE 0 END)=0
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16715 次 |
| 最近记录: |