簡體   English   中英

在多個條件下引用子查詢

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM