SQL 简单查询 - 多条目过滤

标签 sql database oracle

新手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

或者您可以将 WHERENOT 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/

相关文章:

mysql - SQL复制并保存为JSON格式

database - 如何连接到 postgresql google cloud sql 实例?需要使用 pg_restore 命令导入 postgresql 转储

sql - 无法连接到 Azure SQL 服务器,错误 :

sql - Oracle使用with子句创建表

java - Java 中绑定(bind)变量的 SQL 查询需要很长时间

sql - ActiveRecord 查询返回对象两次(同一对象的 2 个实例)

mysql - 从表中删除旧记录

sql - 如何使用外键选择用户集合?

java - jdbc 中管理丢失连接的标准方法是什么?

java - 通过 Java (JDBC) 连接到支持 SSL 的 Oracle DB