0

クエリ (SQL Server 2012) で次のことを実行したいと思います: 共通のリンク可能なレコードがないテーブルから別のテーブルにデータを更新します (結合してから更新することはできません)。唯一の類似点は、テーブルが同じ構造であることです

シンプルにする(100以上のアイテムを転送する)

  • 表 1a: KEY、TagName <-- a.TagName は 'Tag1' と同じ
  • 表 1b: DS_KEY、Make、Model <- 更新データのソース
  • 表 2a: KEY、TagName <-- b.TagName は 'Tag2' と同じ
  • 表 2b: DS_KEY、Make、Model <- 更新データの宛先

それで、

  • 表 1a: 123、Tag1
  • 表 1b: 123、テスト 1、モデル 1
  • 表 2a: 456、Tag2
  • 表 2b: 456、ヌル、ヌル

私が持っているもの:

 --Query 1
 SELECT KEY, TagName, DS_KEY, Make, Model
 FROM Table1a
 JOIN Table1b
 ON Table1a.KEY = Table1b.DS_KEY
 Where TagName = 'Tag1'

結果(123、タグ1、123、テスト1、モデル1)

 --Query 2
 SELECT KEY, TagName, DS_KEY, Make, Model
 FROM Table2a
 JOIN Table2b
 ON Table2a.KEY = Table2b.DS_KEY
 Where TagName = 'Tag2'

RESULT(456、Tag2、456、NULL、NULL)

作業したいミックスを返します。この時点から Table2b を更新する方法に困惑しています。それらに参加できません (少なくとも方法がわかりません!)。もしかしてユニオンオール?する必要がないことを本当に願っています

  Update Table2b 
  Set Table2b.Make = 
  (SELECT Make FROM Table1a
  JOIN Table1b
  ON Table1a.KEY = Table1b.DS_KEY)
  FROM Table2a
  JOIN Table2b
  ON Table2a.KEY = Table2b.DS_KEY
  Where Table2a.TagName = 'Tag2'

私が言ったように、私は約 100 のレコードを設定する必要がありますが、もっと簡単な方法が必要なようです。事前に感謝し、質問を簡単にするために言い換えようとしているので、構文エラーを許してください(そして私は疲れています!):)

4

2 に答える 2