使用select动态设置IDMultilingual值

时间:2013-01-11 14:23:09

标签: sql

在我的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'

1 个答案:

答案 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谓词更安全。