我有这样的查询
select * from Cars where
car_id!=(Select car_id from reservation where reservation_date between '2013-05-13' and '2013-05-15')
如果在该日期之间没有任何内容,我想采取 car_id='' 但它不起作用。
首先检查这是否返回正确的值
Select car_id
from reservation
where reservation_date
between '2013-05-13' and '2013-05-15'
尝试这个:
select *
from Cars
where car_id
not in
(
Select car_id
from reservation
where reservation_date between '2013-05-13' and '2013-05-15'
)
根据 draxxxeus 的回答使用“不在”中会起作用,但是一旦您获得大量数据,您的查询就会很慢。获得答案的一种不太直观但逻辑上等效的方法是这样的:
where car_id in
(select car_id
from cars
except
select car_id
from reservation
etc
)
如果您的数据库支持该语法,它将比使用“not in”运行得更快。对于某些数据库,例如 Oracle,您必须使用单词“minus”而不是“except”。