我需要比较查询的同一个表中的行,并返回另一个表中id的匹配记录的结果。
以下是第一个表的示例:
id checkin checkout
1 01/15/13 01/31/13
1 01/31/13 05/20/13
2 01/15/13 05/20/13
3 01/15/13 01/19/13
3 01/19/13 05/20/13
4 01/15/13 02/22/13
5 01/15/13 03/01/13
我想只在今天的日期之后获得没有匹配记录的id表中的记录。因此,第二个记录结帐日期是在今天的日期之后,因此不会返回ID 1和3。然后我想将这些id与另一个表中的记录匹配,并从第二个表中返回值。
示例第二个表:
id address zip
1 abc 98734
2 uvx 12345
3 ;alksdf 12347
4 bhg 34567
5 ;alkjdf 56789
所以在这种情况下,我会返回id 4和5的地址和zip。
答案 0 :(得分:3)
喜欢什么?
SELECT *
FROM table2
WHERE table2.id NOT IN (SELECT DISTINCT table1.id
FROM table1
WHERE table1.checkin > sysdate OR
table1.checkout > sysdate) AND
table2.id IN (SELECT DISTINCT table1.id
FROM table1)
编辑以排除将来有日期的人,并确保有相应的记录
答案 1 :(得分:2)
只获取今天或更早的记录,请执行以下操作:
where checkout <= trunc(sysdate)
编辑从此处开始
要在将来退出包含结帐日期的记录,请执行以下操作:
where not exists
(select 1 record
from yourTable t2
where checkout > trunc(sysdate + 1)
and t2.id = yourTable.id
)