簡體   English   中英

有條件的左外部聯接的MySQL子查詢

[英]Mysql subquery with conditional left outer join

嘗試在子查詢FROM子句中使用來自外部查詢的參數。

tbl1:
| id | val1 | str1 |
| 1  | 12   | sbc  |
| 2  | 22   | sds  |

tbl2:
| id | val1 | str1 |
| 1  | 1    | cp   |

嘗試編寫以下查詢:

select * from
    tbl1 t, (select * from tbl2 where t.id = tbl2.id and tbl2.val1 = 1) tb12;

預期產量:

| id | val1 | str1 | id   | val1 | str1 |
| 1  | 12   | sbc  | 1    | 1    | cp   |
| 2  | 22   | sds  | null | null | null |

但是它失敗並顯示以下錯誤:

/* SQL Error (1054): Unknown column 't.id' in 'where clause' */

我在這里做錯了什么?

是否有任何理由不使用像這樣的普通舊左連接:

select * from tbl1 t1 left join tbl2 t2 on t1.id = t2.id;
SELECT  *
FROM    tbl1 t
LEFT JOIN
        tbl2 t2
ON      t2.id = t.id
        AND t2.val1 = 1
 SELECT * tbl1 UNION select * from tbl2;

將產生相同的結果

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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