Для чего предназначен ORDER BY?
Что вы, вероятно, имеете в виду, примерно так:
UPDATE TableName
SET (Col1, Col2, Col3) = (SELECT T2.Col1, T2.Col2, T2.Col3
FROM TableName2 AS T2
WHERE TableName.Col4 = T2.Col4
)
WHERE EXISTS(SELECT * FROM TableName2 AS T2 WHERE TableName.Col4 = T2.Col4);
Эта неуклюжая операция:
- Извлекает строки из TableName2, которые соответствуют TableName, в значение в Col4 и обновляет TableName значениями из соответствующих столбцов.
- Гарантирует, что будут изменены только строки в TableName с соответствующей строкой в TableName2; если вы удаляете предложение WHERE из UPDATE, вы заменяете значения в Col1, Col2 и Col3 нулями, если в TableName есть строки без соответствующей записи в TableName2.
Некоторые СУБД также поддерживают нотацию обновления-соединения, чтобы уменьшить ужасность этой нотации.