簡體   English   中英

MySQL-在兩個表上具有條件的左連接

[英]MySQL - Left join with condition on 2 tables

我有這兩個表:

T1:

id | bookable
1  | 1
2  | 1
3  | 0
4  | 1
5  | 0

T2:

id | t1_id
1  |   2
2  |   2
3  |   3
4  |   4
5  |   2

並且我想選擇“可預訂”為1或t2中至少一個對應值的t1行。

以我的示例為例,結果如下:

t1.id => 1,2,3,4

我已經嘗試過使用“左聯接”,“計數”,“具有”和“分組依據”的一些請求,但是我無法獲得想要的結果:(

感謝所有幫助。

謝謝!

正如潛伏者所說,您並不想嘗試進行任何計數或GROUP BY。 嘗試這個

     select t1.* 
     from t1 left join t2
     on t1.id = t2.t1_id
     where t1.bookable = 1
     or t1.id in (select t2.t1_id from t2)

由於聯接表中的id不再是唯一的,因此GROUP BY可以/可以起作用。 LEFT JOIN ,該條件t1.id存在於t1_id連接表的列是任一的t2屬性( t2.idt1_id )不是NULL:

SELECT t1.id FROM t1
    LEFT JOIN t2 ON t1_id = t1.id
    WHERE bookable = 1 OR NOT ISNULL(t2.id)
    GROUP BY t1.id

暫無
暫無

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

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