通过加入另一个表,从IBM DB2的最近5天的表中获取行

问题描述:

我在DB2中有两个表。通过加入另一个表,从IBM DB2的最近5天的表中获取行

table1 
---- 
sidpk     pid 
-------------------------- 
24gsr3    xyz 
67sfr9    xyz 
67sts8    xyz 

table2 
------------------------- 
sid     date 
-------------------------- 
24gsr3    2017-09-24 
67sfr9    2017-09-23 
67sts8    2017-09-15 
. 
. 
and so on 

我正在尝试获取所有可用的行,这些行是从今天开始的5天之前从表2中创建的。

在上述情况下,我希望它应该返回是24gsr3,67sfr9

什么在我的查询缺少?

请找到它。

SELECT a.sidpk from table1 a 
LEFT JOIN 
table2 b 
ON a.sidpk= b.sid 
WHERE a.pid='xyz' AND b.date>= DATE_SUB(CURDATE(), INTERVAL 5 DAY) AND 
b.date<= CURDATE() 
ORDER BY b.date DESC 
+0

哪些操作系统?你是否得到所有的行或错误?尝试当前日期 - 5天而不是date_sub – MichaelTiefenbacher

+0

@MichaelTiefenbacher,我正在使用Microsoft。但它与操作系统有什么关系? – Aliy

+0

你为什么不使用INNER JOIN?我不认为你有意使用LEFT JOIN。 –

这应该工作

SELECT a.sidpk from table1 a 
    LEFT JOIN table2 b 
    ON a.sidpk= b.sid 
WHERE a.pid='xyz' 
    AND b.date >= current date - 5 days 
    AND b.date <= current date 
ORDER BY b.date DESC 
+0

它的工作原理。谢谢迈克尔 – Aliy