0

我有两个表如下:

表 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 大于表 B 中的 AIID 的 AID 明智,还有任何新的 AID 记录。

例如,我需要从表 A 中获取以下行:

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

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

谢谢,

4

1 回答 1

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 中具有更大或相等条目的条目并消除它们。其余的被退回。

一个用于测试的 SQLfiddle

于 2013-10-31T12:46:53.340 回答