簡體   English   中英

mysql where條件基於左聯接字段

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

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