获取表的记录不存在于另一个表+ sql server中

时间:2013-10-31 12:36:54

标签: sql-server-2008

我有两张表格如下:

表A:

AIID  AID  AName
1     200   'A'
2     200   'B'
3     200   'C'
4     300   'D'
5     300   'E'
6     400   'F'
7     400   'G'

Table B:

BID  AIID   AID   AName
 1     2     200    'B'
 2     6     400    'F'

现在我需要从表A中获取记录,所有AIID都是由AID明智的,其AIID大于AID中的AIID,AID明智,也是任何新的AID记录。

Ex,我需要从表A中获得以下行:

AIID  AID  AName
3     200   'C'
4     300   'D'
5     300   'E'
7     400   'G'

有人可以建议如何为此编写查询吗?

谢谢,

1 个答案:

答案 0 :(得分:1)

据我了解你的问题,应该这样做;

SELECT TableA.*
FROM TableA
LEFT JOIN TableB
  ON TableA.AID  = TableB.AID
 AND TableA.AIID <= TableB.AIID
WHERE TableB.BID IS NULL;

它基本上反过来,它在A中找到B中具有更大或相等条目的所有条目并消除它们。其余的都归还了。

An SQLfiddle to test with