1

在我的INNER JOIN子句中,我想IDMultilingual使用 select 语句动态设置列值。我必须使用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'
4

1 回答 1

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');

或谓词以相同的方式,并且对于 column 的值,EXISTS它可能比IN谓词更安全。NULLID

于 2013-01-11T14:25:58.373 回答