[英]SQL: left join query
我在形成sql查詢時遇到問題。
表結構:
TABLE A:
id | data_a
--------|--------
1 | data1
2 | data2
3 | data3
TABLE B:
id | data_b | a_id
--------|--------|--------
1 | data4 | 1
2 | data5 | 1
3 | data6 | 2
4 | data7 | 3
5 | data8 | 3
TABLE C:
id | data_c | b_id | x_id
--------|--------|--------|--------
1 | data9 | 1 | 1
2 | data10 | 2 | 1
3 | data11 | 3 | 1
4 | data12 | 1 | 2
5 | data13 | 4 | 2
要求的輸出:
data_a | data_b | data_c
--------|--------|--------
data1 | data4 | data12
data1 | data5 |
data2 | data6 |
data3 | data7 | data13
data3 | data8 |
當前SQL:
SELECT data_a, data_b, data_c
FROM a
LEFT JOIN b ON a.id = b.a_id
LEFT JOIN c ON b.id = c.b_id
WHERE c.x_id = 2 OR c.x_id = null;
將x_id = 2置於左連接條件。
SELECT
data_a,
data_b,
data_c
FROM
a LEFT JOIN b ON a.id = b.a_id
LEFT JOIN c ON b.id = c.b_id and c.x_id=2;
嘗試這個 : -
SELECT
data_a,
data_b,
data_c
FROM
(Select data_a,data_b,b.id from a LEFT JOIN b ON a.id = b.a_id) as k
LEFT JOIN (Select * from c WHERE
c.x_id = 2 OR c.x_id = null) as j ON k.id = j.b_id
對於完全匹配,只需添加:-
order by data_a,data_b
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.