簡體   English   中英

如何使用IN條件以及LEFT OUTER JOIN和ON

[英]How to use IN condition along with LEFT OUTER JOIN and ON

我想使用IN條件,它適用於值,不適用於另一個表的變量,這是我的示例

SELECT  A.*,B.* 
FROM table1 AS A 
LEFT JOIN erp_wh_salhd AS B ON B.InvNo = '15'  AND A.InvNo IN (B.filter1) 
//Not working  Comming only one row for B table

如果我直接傳遞值意味着它有效,即

SELECT  A.*,B.* 
FROM table1 AS A 
LEFT JOIN erp_wh_salhd AS B ON B.InvNo = '15'  AND A.InvNo IN (2,3)  
// Working. table B have two values 

如果erp_wh_salhdfilter1字段是用逗號分隔的值列表,則需要使用FIND_IN_SET而不是IN

SELECT  A.*,B.* 
FROM table1 AS A 
LEFT JOIN erp_wh_salhd AS B ON B.InvNo = '15'  AND FIND_IN_SET(A.InvNo, B.filter1) 

事實是您正在使用聯接,可以嘗試使用=

    SELECT  A.*,B.* 
    FROM table1 AS A 
    LEFT JOIN erp_wh_salhd AS B ON B.InvNo = '15'  
        AND A.InvNo  = B.filter1

IN子句允許多個值。 在第一個查詢中,您僅提供一個值,但是:

AND A.InvNo IN (B.filter1)

那等於

AND A.InvNo = B.filter1

因此,僅將那些B行連接到A行,其中B行的InvNo為15,且filter1等於A的InvNo。

在第二個查詢中,將InvNo為15的所有B行連接到InvNo為2或3的所有A行。

兩個完全不同的查詢,您無法真正進行比較。

暫無
暫無

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

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