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