新手SQL查询问题: 我正在使用 Oracle SQL Developer。
我有一张 table :
<name> <color>
steve red
mark red
steve green
john red
ryan red
我想做的是让结果只显示颜色列中包含红色的名称。
结果将是:
mark
john
ryan
因为史蒂夫也有绿色,所以它不会出现。
有人知道吗?
编辑:
谢谢你的回答。我确实看到我应该在结果中说“红色,没有其他颜色”。抱歉造成混淆,但感谢您的超快速回复!
最佳答案
您只需使用 WHERE
子句和 NOT IN
进行查询。
SELECT name
FROM yourTable
WHERE color = 'red'
AND name NOT IN (
SELECT name
FROM yourTable
WHERE color <> 'red'
)
参见SQL Fiddle with Demo
或者您可以将 WHERE
与 NOT EXISTS
一起使用:
SELECT name
FROM yourTable t1
WHERE color = 'red'
AND NOT EXISTS (
SELECT t2.name
FROM yourTable t2
WHERE t2.color <> 'red'
AND t1.name = t2.name
)
参见SQL Fiddle with Demo
关于SQL 简单查询 - 多条目过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12150098/