MW211 EXIT

devlog
MSSQL/JOINによるUPDATEで複数候補
2022年05月27日
他テーブルをJOINしてUPDATEする場合、複数行になったらどうなるのか?
┌──────────────────────────────────────┐
│GO                                                                          │
│    DECLARE @テストD table (                                               │
│        [列]    [nvarchar](16)  NULL                                        │
│    );                                                                      │
│    INSERT INTO @テストD VALUES (NULL);                                    │
│    UPDATE [出力D]                                                         │
│        SET [列] = [入力D].[列]                                            │
│        FROM @テストD AS [出力D]                                          │
│            CROSS JOIN (                                                    │
│                SELECT *                                                    │
│                    FROM (                                                  │
│                        VALUES ('A'),                                       │
│                               ('B'),                                       │
│                               ('C')                                        │
│                    ) AS [入力D]([列])                                     │
│            ) AS [入力D];                                                  │
│    SELECT * FROM @テストD;                                                │
│GO                                                                          │
│--→「A」に更新された                                                       │
└──────────────────────────────────────┘
最初のレコードが優先される。

でも、最初ってなんだよ?問題が発生する恐れがあるので、
あまり使わない方がよいだろう。
ひとまず二重キーエラーとかにならないので、対策は軽くてよいということで。
分類:MSSQL