ここでいくつかの問題があります。複数の列の結合を使用するSQL Serverの更新ステートメント
表1:
CID, Name, HID
(001-233, Test1, 12345)
は表2:次のように
CID, Name, HID, Primary
(001-233, Test1, 12345, '')
参加Table2
が'Y'
と呼ばれる一定の値でTable1
に存在する更新するので、文は次のとおりです。
UPDATE T2 SET T2.Primary = 'Y'
FROM T2
INNER JOIN T1
ON (T1.CID = T2.CID
AND T1.HID = T2.HID)
このステートメントは、すべての行の更新が終了するだけです.1つのIDだけではなく、他のIDには結合されないようです。私は最終的にあきらめて、2つのideフィールドCID + HIDを連結して、単一の "id"を持つWHERE IN
サブクエリを実行しました。しかし、私はなぜこれが適切な結合を使って動作しないのか理解したい。
Table1
はCTE ..です
これあなたが更新されないように期待されるいくつかの例のデータを追加することができ、動作するはず? – Andomar
それは私のために働く。私はT2のすべての行のT1に一致する行があるので、すべての行を更新すると思います。 – Phil
問題が解決しない場合、T1はCTEです。私はこれが私を夢中にさせない。それは私がちょうどそれを得ることを他の方法で動作します。 – sridawg