在以下两个表中考虑以下查询:
SELECT sid FROM Salesman SM WHERE sid IN(SELECT sid FROM Sale S WHERE s.sid<>sm.sid)
销售表
SALEID SID SLDATE
1001 1 01-Jan-14
1006 1 01-Jun-15
1003 4 01-Feb-14
1002 5 02-Jan-14
1005 2 01-Feb-14
1004 1 01-Mar-14
推销员表
SID SNAME LOCATION
1 Peter London
2 Michael Paris
3 John Mumbai
5 Kevin London
4 Harry Chicago
6 Alex Chicago
为什么它没有取得任何结果?
例如:在外部查询的第一次迭代中,内部查询应该返回2,4,5。但似乎没有。为什么呢?
PS:请忽略此类查询的实际用法。这是出于学术目的。
答案 0 :(得分:1)
因为在这种情况下不可能取任何东西,所以我不明白你想要做什么。 正如我所看到的那样,你要么选择所有没有销售的帆船,那么这是正确的查询:
select sid from Salesman SM where sid not in (select sid from Sale S)
或者您只想要销售的销售人员,在这种情况下,这是正确的查询:
select sid from Salesman SM where sid in (select sid from Sale S)