[英]Referencing sub-query in multiple conditions
我有一個名為employees
的表:
id | name | born | stinky
-------------------------------------------------
1 Chris 1982 1
2 Chris 1982 1
3 Bob 1982 0
4 Chris 1982 1
我想根據以下條件抓取第 2、4 行:
SELECT
id,name,born,stinky
FROM
employees
WHERE
name=(SELECT name FROM employees WHERE id=1)
AND
born=(SELECT born FROM employees WHERE id=1)
AND
stinky=(SELECT stinky FROM employees WHERE id=1)
AND
id != 1
有沒有辦法優化這個只執行一個子查詢,然后多次引用子查詢數據? 例如,像這樣:
SELECT
id,name,born,stinky
FROM
employees
SUBQUERY
(SELECT name FROM employees WHERE id=1) AS XX
WHERE
name=XX.name
AND
born=XX.born
AND
stinky=XX.stinky
AND
id != 1
您只能使用一次子查詢:
SELECT id,name,born,stinky
FROM employees
WHERE (name,born,stinky) = (SELECT name,born,stinky FROM employees WHERE id=1)
AND id <> 1
另一種方法是加入:
SELECT e.id,e.name,e.born,e.stinky
FROM employees e
INNER JOIN (SELECT * FROM employees WHERE id=1) t
ON (t.name,t.born,t.stinky) = (e.name,e.born,e.stinky) AND t.id <> e.id
請參閱演示。
結果:
ID | 姓名 | 出生 | 臭的 |
---|---|---|---|
2 | 克里斯 | 1982年 | 1 |
4 | 克里斯 | 1982年 | 1 |
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.