2016-06-11 85 views
1

SQL - 查找所有者沒有任何租車的記錄。 我已經得到了以下(在MS Access):SQL - 查找記錄,其中id不存在/具有任何

Car_Owner 
+----+------+---------+--------+ 
| id | name | Car reg | Rental | 
+----+------+---------+--------+ 
| 1 | Adam | ABC123 | True | 
+----+------+---------+--------+ 
| 2 | John | XXX111 | True | 
+----+------+---------+--------+ 
| 2 | John | XXX222 | False | //Same person as above 
+----+------+---------+--------+ 
| 3 | Eva | YYY999 | False | 
+----+------+---------+--------+ 

我如何找出誰不到風度租什麼車?在這種情況下,只是伊娃。約翰不應該因爲他已經租了一輛汽車而被列入名單。

任何幫助將不勝感激。

回答

4

一種方法是使用聚合:

select name 
from car_owner 
group by name 
having sum(iif(rental, 1, 0)) = 0; 

您還可以檢查該值始終爲假做:

having max(rental) = 0 and min(rental) = 0 
+0

感謝那些工作:) BTW我怎麼可以用 「SELECT COUNT(ID)」?簡單地把一個「數」給我錯誤的價值,讓人困惑。 – Nyprez

+0

@Nyprez。 。 。您的評論似乎與問題或答案無關,因爲它們中都沒有「count()」。我建議你再問一個問題。 –

+0

不用擔心我解決了它:)我只是好奇,這就是爲什麼我問,但它與我真正的問題無關,所以我沒有提到它。 – Nyprez

1
Select * from Car_Owner 
Where Rental = False 
    and Id Not In 
     (Select Id from Car_Owner Where Rental = True) 
1
select * from car_owner 
where name not in (select name from car_owner where rental = True); 
1

下面SQL可以幫助你太:

SELECT * 
FROM Car_Owner 
WHERE Rental = False 
     AND id NOT IN (SELECT id 
         FROM Car_Owner 
         WHERE Rental = True) 

OR

SELECT * 
FROM Car_Owner a 
WHERE Rental = False 
     AND NOT EXISTS (SELECT id 
         FROM Car_Owner b 
         WHERE b.Rental = True 
           AND b.id = a.id) 
+0

謝謝!第二個解決方案很有趣。 – Nyprez

相關問題