我有两个看起来像这样的表:
T1: ID | Date | Hour | Interval
T2: ID | Date | Hour
当他们的ID,日期和小时匹配时,我基本上需要加入这些表。但是,我只想从表1中返回不与表2中的结果匹配的结果。
我知道这看起来很简单,但我遇到的情况是表1中有多行与表2匹配(任何给定小时都有多个行间隔)。我需要返回所有这些间隔,只要它们不在表2中的相同小时内。
示例数据:
T1: 1 | 1/1/2011 | 1 | 1
1 | 1/1/2011 | 1 | 2
1 | 1/1/2011 | 2 | 1
1 | 1/1/2011 | 2 | 2
T2: 1 | 1/1/2011 | 1
我的预期结果集是T1
的最后两行。有人能指出我走在正确的轨道上吗?
答案 0 :(得分:54)
答案 1 :(得分:24)
使用LEFT JOIN
并过滤掉非NULL
T2列的行:
SELECT T1.* FROM T1 LEFT JOIN T2 ON T1.ID = T2.ID
AND T1.Date = T2.Date AND T1.Hour = T2.Hour
WHERE T2.ID IS NULL