Sql从第二个选择返回null

时间:2013-05-19 12:27:59

标签: sql select null

我有这样的查询

select * from Cars where 
car_id!=(Select car_id from reservation where reservation_date between '2013-05-13' and '2013-05-15')

如果那个日期之间没有任何内容,我想把car_id =''带走,但它不起作用。

2 个答案:

答案 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”。