0

以下のように2つのテーブルがあります。

表 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;

基本的には逆のことを行い、B のエントリよりも大きいか等しいエントリを持つ A のすべてのエントリを見つけて、それらを削除します。残りは返されます。

でテストする SQLfiddle

于 2013-10-31T12:46:53.340 に答える