如何解决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
如果我想选择在至少1行中有至少1行的所有col1值,我可以这样做:
SELECT col1
FROM mytable
WHERE col1 IN (\'A\',\'B\',\'C\')
GROUP BY col1
HAVING col2 = \'bear\'
这将返回A和B
但我只想从col1中没有
col2 = \'bear\'
的行中选择值
我在想
NOT HAVING
,但这似乎行不通。
有任何想法吗?谢谢!
解决方法
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\')
,您还可以使用以下技巧:
SELECT col1
FROM mytable
WHERE col1 IN (\'A\',\'C\')
GROUP BY col1
HAVING SUM(CASE col2 WHEN \'bear\' THEN 1 ELSE 0 END)=0
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。