2012-08-10 69 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;