簡體   English   中英

JOINed 表上的 WHERE - 僅在找到行(已連接)時適用

[英]WHERE on JOINed table - only apply if rows are found (joined)

我的查詢:

SELECT
    T1.* 
FROM
    table1 T1
    LEFT JOIN table2 T2 ON T2.fk = T1.id
WHERE
    T2.active = 1

並非table1中的所有行都可以連接到table2 對於那些可以的,應該設置T2.active=1約束。

問題

如果在table2中找不到連接的行,但我仍然會從table1中獲取行(有點, IF EXISTS, then T2.active=1 ),我該如何修復該查詢

謝謝!

第二張表的條件應該在on子句中:

SELECT T1.* 
FROM table1 T1 LEFT JOIN 
     table2 T2
     ON T2.fk = T1.id AND T2.active = 1;

請注意,如果您只是從table1中選擇列,這並不是特別重要。 我假設您的SELECT實際上有兩個表中的列。

暫無
暫無

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

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