【问题标题】:To use SELECT query in WHERE clause在 WHERE 子句中使用 SELECT 查询
【发布时间】:2013-03-01 08:11:15
【问题描述】:

我想列出与 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中

使用上面的我另外在表中的多个值

【问题讨论】:

    标签: sql where


    【解决方案1】:

    试试这个查询

    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%'
    

    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
                                                 )
    

    【讨论】:

      【解决方案2】:

      试试这个

       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%'
      

      【讨论】:

        猜你喜欢
        • 2021-11-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-28
        • 1970-01-01
        • 2011-09-19
        相关资源
        最近更新 更多