SQL Server'da**, bir SELECT
deyimi kullanarak bir tabloya insert
yapmak mümkündür:
INSERT INTO Table (col1, col2, col3)
SELECT col1, col2, col3
FROM other_table
WHERE sql = 'cool'
Bir SELECT
aracılığıyla güncelleme yapmak da mümkün müdür? Değerleri içeren geçici bir tablom var ve bu değerleri kullanarak başka bir tabloyu güncellemek istiyorum. Belki şöyle bir şey olabilir:
UPDATE Table SET col1, col2
SELECT col1, col2
FROM other_table
WHERE sql = 'cool'
WHERE Table.id = other_table.id
UPDATE
Table_A
SET
Table_A.col1 = Table_B.col1,
Table_A.col2 = Table_B.col2
FROM
Some_Table AS Table_A
INNER JOIN Other_Table AS Table_B
ON Table_A.id = Table_B.id
WHERE
Table_A.col3 = 'cool'
Ben Robin'in mükemmel cevabını aşağıdaki şekilde değiştirirdim:
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 cümlesi olmadan, etkilenmesi gerekmeyen satırları bile etkilersiniz, bu da (muhtemelen) dizinin yeniden hesaplanmasına veya gerçekten ateşlenmemesi gereken tetikleyicilerin ateşlenmesine neden olabilir.