0

我有这样的查询

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

如果在该日期之间没有任何内容,我想采取 car_id='' 但它不起作用。

4

2 回答 2

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'
)
于 2013-05-19T12:30:50.683 回答
0

根据 draxxxeus 的回答使用“不在”中会起作用,但是一旦您获得大量数据,您的查询就会很慢。获得答案的一种不太直观但逻辑上等效的方法是这样的:

where car_id in 
(select car_id
from cars
except 
select car_id
from reservation
etc
)

如果您的数据库支持该语法,它将比使用“not in”运行得更快。对于某些数据库,例如 Oracle,您必须使用单词“minus”而不是“except”。

于 2013-05-19T12:42:34.307 回答