2016-09-27 164 views
0

我有兩個表。每個表格有兩個字段:from_dateto_date。我需要找到table A中的所有記錄,這些記錄不會與table B中的記錄重疊。SQL刪除兩個表之間的時間重疊

我使用MSSQL 2008年

CREATE TABLE Table_A(from_date datetime , to_date datetime) 

CREATE TABLE Table_B(from_date datetime , to_date datetime) 

Insert into Table_A (from_date, to_date) values ('2016-09-01 10:00:00','2016-09-01 11:00:00') 

Insert into Table_A (from_date, to_date) values ('2016-09-01 11:00:00','2016-09-01 12:00:00') 

Insert into Table_A (from_date, to_date) values ('2016-09-01 12:00:00','2016-09-01 13:00:00') 

Insert into Table_B (from_date, to_date) values ('2016-09-01 10:00:00','2016-09-01 12:00:00') 

Insert into Table_B (from_date, to_date) values ('2016-09-01 13:00:00','2016-09-01 14:00:00') 

Insert into Table_B (from_date, to_date) values ('2016-09-01 14:00:00','2016-09-01 15:00:00') 

結果應該是僅在表A(1200-1300)第三條記錄,因爲它不如果你在表重疊的任何記錄B.

回答

1

想要沒有重疊,那麼這裏是一種方式:

select a.* 
from table_a a 
where not exists (select 1 
        from table_b b 
        where a.from_date < b.to_date and a.to_date > b.from_date 
       ); 
+0

丟失了table_b的別名。 – p2k

+0

完全加入有什麼問題? – ajeh