[英]mysql where condition based on left join field
我正在研究一個邏輯,如果LEFT聯合字段為null,則不應應用Where中的條件。 有人可以告訴我如何僅通過查詢來完成。
我嘗試使用IF CASE,但沒有幫助,
查詢:
SELECT *
FROM tableA ta
LEFT JOIN tableB tb ON tb.id = ta.id_c
WHERE ta.sales = 'Closed'
AND tb.deleted=0
當ta.id_c為null時, 不應考慮AND tb.deleted = 0的條件。
為什么? 因為當鏈接ID中的值為空時,將沒有查詢數據的選擇。 有什么幫助嗎? 提前致謝。
預期結果:選擇表的列。
實際表:
tableA:
id_c sales
1 Closed
2 Closed
tableB:
id deleted
1 0
查詢后:當前
id_c sales id deleted
1 Closed 1 0
預期
id_c sales id deleted
1 Closed 1 0
2 Closed NULL NULL
注意:我無法編輯LEFT JOIN條件
給定
create table tableA (
id_c integer,
sales varchar(255)
);
create table tableB (
id integer,
deleted bool
);
insert into tableA values (1, 'Closed'), (2, 'Closed');
insert into tableB values (1, 0);
SELECT *
FROM tableA ta
LEFT JOIN tableB tb ON tb.id = ta.id_c
WHERE
(ta.sales = 'Closed' AND tb.deleted = 0) OR
(ta.sales = 'Closed' AND tb.id is null)
或少一點羅word
WHERE
(ta.sales = 'Closed') AND (tb.deleted = 0 OR tb.id is null);
結果是
id_c sales id deleted
1 Closed 1 0
2 Closed NULL NULL
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.