2013-03-01 122 views
1

我想从其中涉及需要从两个表进行比较的记录列表中的where子句中的表列出行要使用SELECT查询的WHERE子句

SELECT DISTINCT (CONA.DOCUMENTID), CONA.CONTENTID 
FROM TABLEA AS CONA 
INNER JOIN TABLEB AS CTAGA ON CTAGA.CONTENTID = CONA.CONTENTID 
WHERE CONA.DOCUMENTID LIKE 'PM%' 
AND (
    SELECT TAGID 
    FROM TABLEB 
    WHERE CTAGA.CONTENTID = CONA.CONTENTID 
) IN (SELECT TAGID FROM TABLEC) 

在上面SELECT TAGID FROM TABLEB WHERE CTAGA.CONTENTID = CONA.CONTENTID将有

ABC,DEF,GHI,JKL,MNO

SELECT TAGID FROM TABLEC将有ABC,DEF,GHI,JKL,MNO,PQR,STU

是否有可能检查列表A中的所有记录是有名单B

在表使用上面的我另外的多重价值

回答

0

试试这个

SELECT DISTINCT (CONA.DOCUMENTID),TAGID FROM TABLEB As CTAGA 
Join TABLEC As CONA On CTAGA.CONTENTID = CONA.CONTENTID 
Where CTGA.TAGID in (SELECT TAGID FROM TABLEC) 
AND CONA.DOCUMENTID LIKE 'PM%' 
0

试试这个查询

SELECT DISTINCT (CONA.DOCUMENTID), CONA.CONTENTID 
FROM TABLEA AS CONA INNER JOIN TABLEB AS CTAGA ON CTAGA.CONTENTID = CONA.CONTENTID 
         AND CTAGA.TAGID IN (SELECT TAGID FROM TABLEC)      
WHERE CONA.DOCUMENTID LIKE 'PM%' 

OR

SELECT DISTINCT (CONA.DOCUMENTID), CONA.CONTENTID 
FROM TABLEA AS CONA INNER JOIN TABLEB AS CTAGA ON CTAGA.CONTENTID = CONA.CONTENTID           
WHERE CONA.DOCUMENTID LIKE 'PM%' AND EXISTS (
              SELECT 1 
              FROM TABLEC 
              WHERE CTAGA.TAGID = TABLEC.TAGID 
              )