使用非查询内部的列

时间:2014-07-21 14:05:17

标签: sql db2

我有一个SQL查询,如下所示:

SELECT 
       A.COL1, A.COL2 
FROM 
       SOMESCHEMA.TABLE1 A
WHERE 
       A.COL3 NOT IN (SELECT A1.COL3 FROM SOMESCHEMA.TABLE2 B, SOMESCHEMA.TABLE1 A1 WHERE A.COL4 = B.COL4 AND B.DATE >= '2014-01-17')

上述查询的结果是两列COL1和COL2。

现在我想将第二个表的DATE列放入我的结果中。

也就是说,结果应该是COL1,COL2和DATE。

如何实现这一目标? 谢谢你的阅读!

2 个答案:

答案 0 :(得分:1)

这正是您要使用联接的情况:

SELECT 
      A.COL1, A.COL2, B.DATE
FROM
      SOMESCHEMA.TABLE1 A INNER JOIN SOMESCHEMA.TABLE2 B ON A.COL3 = B.COL3
WHERE B.DATE >= '2014-01-17'

您可以在此处找到有关在DB2中使用JOINS的更多信息:http://www-01.ibm.com/support/knowledgecenter/?lang=en#!/SSEPEK_10.0.0/com.ibm.db2z10.doc.intro/src/tpc/db2z_innerjoin.dita

答案 1 :(得分:0)

您提出的问题毫无意义 - 您要求数据不匹配的匹配数据。每个表的样本数据和样本输出在这里真的很有帮助。

这是我对你要做的事情的最好猜测:

从Table2返回数据,其中COL4上的匹配项大于1月17日且具有不同的COL3

SELECT 
       A.COL1, A.COL2, B.DATE
FROM 
    SOMESCHEMA.TABLE1 A
     INNER JOIN 
    SOMESCHEMA.TABLE2 B ON 
        A.COL4 = B.COL4 AND
        B.DATE >= '2014-01-17' AND 
        A.COL3 <> B.COL3