Получение ошибки в запросе - PullRequest
0 голосов
/ 12 октября 2009

обновить набор имен таблиц (col1, col2, col3) = (выбрать col1, col2, col3 из tableName2 в порядке по tablenmae2.col4) ошибка возврата Отсутствует ). Запрос работает нормально, если я уберу заказ по пункту

Ответы [ 2 ]

2 голосов
/ 12 октября 2009

ORDER BY не допускается в подзапросе в UPDATE. Таким образом, вы получаете ошибку «Missing)», потому что синтаксический анализатор ожидает завершения подзапроса в тот момент, когда у вас ORDER BY.

0 голосов
/ 12 октября 2009

Для чего предназначен 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);

Эта неуклюжая операция:

  1. Извлекает строки из TableName2, которые соответствуют TableName, в значение в Col4 и обновляет TableName значениями из соответствующих столбцов.
  2. Гарантирует, что будут изменены только строки в TableName с соответствующей строкой в ​​TableName2; если вы удаляете предложение WHERE из UPDATE, вы заменяете значения в Col1, Col2 и Col3 нулями, если в TableName есть строки без соответствующей записи в TableName2.

Некоторые СУБД также поддерживают нотацию обновления-соединения, чтобы уменьшить ужасность этой нотации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...