SQL - 为单个子查询指定多个 where 子句

问题描述 投票:0回答:1

是否可以为 Oracle 数据库上的单个子查询指定多个 where 子句?

姓名 年龄 头发 眼睛 性别
史蒂夫 8 金发女郎 棕色 男孩
约翰 9 金发女郎 蓝色 男孩
艾米丽 8 棕色 棕色 女孩
乔希 8 金发女郎 棕色 男孩

表名称:个人

假设我只知道 josh 这个名字,并且我想知道与 john 具有相同属性的名称,但不是首先学习 john 的属性并编写第二个查询来找出所有名称。由于我可能经常使用这种查询,因此我不想更改每个 where 子句的“NAME”。我宁愿更改它,并希望它以某种方式自动更改其他条款。更具体地说,而不是编写以下查询,

SELECT *
FROM PERSONAL
WHERE AGE IN(SELECT AGE
             FROM PERSONAL
             WHERE NAME = 'josh')
AND HAIR IN (SELECT HAIR
            FROM PERSONAL
            WHERE NAME = 'josh')
AND EYE IN (SELECT EYE
            FROM PERSONAL
            WHERE NAME = 'josh')
AND GENDER IN(SELECT GENDER
              FROM PERSONAL
              WHERE NAME = 'josh')

我正在尝试找到类似下面的东西,

SELECT *
FROM PERSONAL
WHERE AGE,HAIR,EYE,GENDER IN(SELECT AGE,HAIR,EYE,GENDER
                             FROM PERSONAL
                             WHERE NAME = 'josh')

有可能这样做吗?我将不胜感激任何建议或不同的方式。

谢谢。

sql oracle subquery where-clause oracle-sqldeveloper
1个回答
0
投票

这是可能的;只需将整个列列表括在括号中即可:

SELECT *
FROM PERSONAL
WHERE (AGE,HAIR,EYE,GENDER) IN (SELECT AGE,HAIR,EYE,GENDER
      ---------------------     FROM PERSONAL
      parenthesis here          WHERE NAME = 'josh')
© www.soinside.com 2019 - 2024. All rights reserved.