在我的INNER JOIN
子句中,我想使用select语句动态设置列IDMultilingual
值。我必须使用IN
子句,我可以使用EXISTS
子句吗?
INNER JOIN MLTA ON MLTA.IDObject = MSR.idobject
AND MLTA.IDObjectType = 15
AND MLTA.IDMultilingual = SELECT ID
FROM MLA
WHERE Columnname = 'SHOW'
AND Tablename = 'Category'
答案 0 :(得分:0)
使用新别名向同一个表JOIN
添加额外的MLTA
。类似的东西:
...
INNER JOIN MLTA m ON m.IDObject = MSR.idobject
AND m.IDObjectType = 15
INNER JOIN MLTA m2 ON m.IDMultilingual = m2.ID ---<<<<<<<<<<<<<<<<<<<<<<<
....
但是,您可以使用IN
谓词,如下所示:
....
INNER JOIN MLTA ON MLTA.IDObject = MSR.idobject
AND MLTA.IDObjectType = 15
WHERE MLTA.IDMultilingual IN(SELECT ID
from MLA
WHERE Columnname = 'SHOW'
AND Tablename = 'Category');
或EXISTS
谓词的方式相同,如果列IN
的{{1}}值为NULL
谓词,则可能比ID
谓词更安全。