是否可以为 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')
有可能这样做吗?我将不胜感激任何建议或不同的方式。
谢谢。
这是可能的;只需将整个列列表括在括号中即可:
SELECT *
FROM PERSONAL
WHERE (AGE,HAIR,EYE,GENDER) IN (SELECT AGE,HAIR,EYE,GENDER
--------------------- FROM PERSONAL
parenthesis here WHERE NAME = 'josh')