2012-08-10 67 views
0

下面是我的查詢,我想要使用,查詢不按預期運行

select DISTINCT c.sno from Cards as c, reservation as r 
where c.name='CRS-4-FC' AND c.sno != r.ssno; 

該查詢應該只選擇從哪個不要在預留表中存在卡的SNO即沒有SNO存在在保留表中的ssno列中。我把

c.sno!=r.ssno 

所以,我不選擇所有的sno。但是,當這個查詢運行我得到所有的sno,而不是那些不保留。誰能幫出在哪裏我去錯了..

回答

2

嘗試

select DISTINCT c.sno 
from Cards as c 
left outer join reservation as r on c.sno = r.ssno 
where r.ssno is null 
and c.name='CRS-4-FC' 
1

嘗試LEFT JOIN代替:

SELECT DISTINCT c.sno 
FROM Cards c 
    LEFT JOIN reservation as r 
     ON c.sno = r.ssno 
WHERE c.name='CRS-4-FC' AND 
     r.ssno IS NULL; 

Visual Explanation of SQL Joins

1
select DISTINCT c.sno 
from Cards as c LEFT JOIN reservation as r 
ON c.sno = r.ssno 
where c.name='CRS-4-FC' AND r.ssno IS NULL;