我只想选择与查询不匹配的数据。
假设我有两张桌子:
汽车:
id int PRIMARY KEY IDENTITY
make varchar(255) NOT NULL
model varchar(255) NOT NULL
pricegroup varchar(1) NOT NULL
租金:
id int PRIMARY KEY IDENTITY
sdate date NOT NULL
edate date NOT NULL
car_id int NOT NULL
Rentals 中的sdate是租赁的开始日期 - edate是结束日期。
我想在指定的时间段内找到所有可用的汽车。
这个查询几乎可以工作:
SELECT * FROM cars WHERE id NOT IN
(SELECT car_id FROM rentals WHERE sdate <='2013-04-28' AND edate >='2013-04-30')
但是,它仅适用于特定日期。如果您输入 2013 年 4 月 25 日和 2013 年 5 月 30 日之间的时间段,所有汽车都会出现,即使其中一些在该时间段之间已被预订。
我使用 MS SQL 2012。