我想使用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
答案 0 :(得分:1)
如果filter1
中的erp_wh_salhd
字段是用逗号分隔的值列表,则需要使用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)
答案 1 :(得分:1)
确定您正在使用联接的事实,可以尝试使用=
SELECT A.*,B.*
FROM table1 AS A
LEFT JOIN erp_wh_salhd AS B ON B.InvNo = '15'
AND A.InvNo = B.filter1
答案 2 :(得分:0)
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行。
两个完全不同的查询,您无法真正进行比较。