簡體   English   中英

Mysql - 從表 A 返回所有結果並選擇性地與表 B 連接

[英]Mysql - return all results from table A and selectively join with table B

我有兩張桌子:

默認:

+----+--------+
| id | colour |
+----+--------+
| 1  | red    |
| 2  | green  |
| 3  | yellow |
+----+--------+

風俗:

+--------+--------------+---------+
| linkId | customcolour | ownerId |
+--------+--------------+---------+
| 1      | bright red   | 1       |
| 2      | garden green | 2       |
+--------+--------------+---------+

我想從默認表中返回所有內容,然后獲取任何關聯的自定義顏色(通過 linkId)。 我正在使用的查詢是:

SELECT a.colour, b.customcolour 
FROM default a 
LEFT JOIN custom b ON a.id = b.linkId
WHERE (b.ownerId IS NULL OR b.ownerId = 1) 
GROUP BY a.id ORDER BY a.colur

但是,當我加入自定義表時,它不會 select 自定義鏈接 ID 2,因為 ownerId 不是 1 也不是 NULL。 有沒有辦法返回行 default.id = 2 並將 customercolour 設置為 NULL,而不將其添加到表中?

您需要將 WHERE 條件移動到聯接中

SELECT a.colour, b.customcolour 
FROM default a 
LEFT JOIN custom b ON a.id = b.linkId AND (b.ownerId IS NULL OR b.ownerId = 1)
GROUP BY a.id ORDER BY a.colur

暫無
暫無

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

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