1

あるテーブルにあるが別のテーブルにないレコードを検索したい。レコードが同じように形成されていないことを除いて。そのため、比較に使用する列を決定したいと考えています。次のコードでうまくいったと思ったのですが、うまくいかないようです(ゼロレコードを返します)...

SELECT A.Name, A.Position, A.[Year]
  FROM TABLE A
 WHERE NOT EXISTS (

 SELECT B.Name, B.Position, B.[Year]
   FROM TABLE B
)

または、何らかの結合でこれを行う必要がありますか? ありがとう...

4

3 に答える 3

5

WHERE2つのテーブルを相互に比較する句がありません。

SELECT A.Name, A.Position, A.[Year]
  FROM TABLE A
 WHERE NOT EXISTS (

 SELECT B.Name, B.Position, B.[Year]
   FROM TABLE B
   WHERE B.Name = A.Name AND B.Position = A.Position AND B.[Year] = A.[Year]
)
于 2012-09-05T18:29:17.607 に答える
3

3 つの列すべてを使用して比較を行うと仮定すると、アンチ結合を使用できます。

SELECT A.Name, A.Position, A.[Year]
  FROM TABLE_A A
     LEFT JOIN TABLE_B B
     ON a.name = b.name
         and a.position = b.position 
         and a.[Year] = b.[Year]
WHERE
   b.name is null
于 2012-09-05T18:32:59.333 に答える
1

null 値を検索する where 句を使用して、テーブル b で左外部結合を使用できます。

最初のクエリのすべてがテーブル A から取得され、2 番目のクエリのすべてがテーブル B から取得されると想定しています

Select A.Name, A.Position, A.[Year]
from A
Left Join B on A.Name = B.Name and A.Position = B.Position and A.[Year] = B.[Year]
where B.Name is Null
于 2012-09-05T18:40:50.917 に答える