SQL Server**では、SELECT
文を使ってテーブルにinsert
することができます。
INSERT INTO Table (col1, col2, col3)
SELECT col1, col2, col3
FROM other_table
WHERE sql = 'cool'
SELECT`で_update_することも可能ですか?私は値を含む一時的なテーブルを持っていて、それらの値を使って別のテーブルを更新したいと思っています。おそらく次のようなものでしょう。
UPDATE Table SET col1, col2
SELECT col1, col2
FROM other_table
WHERE sql = 'cool'
WHERE Table.id = other_table.id
ロビンさんの素晴らしい回答]1を次のように修正します。
UPDATE Table
SET Table.col1 = other_table.col1,
Table.col2 = other_table.col2
FROM
Table
INNER JOIN other_table ON Table.id = other_table.id
WHERE
Table.col1 != other_table.col1
OR Table.col2 != other_table.col2
OR (
other_table.col1 IS NOT NULL
AND Table.col1 IS NULL
)
OR (
other_table.col2 IS NOT NULL
AND Table.col2 IS NULL
)
WHERE句がないと、影響を受ける必要のない行にまで影響を与えてしまい、インデックスの再計算や、実際には発生しないはずのトリガーが発生する可能性が(おそらく)あります。