Подтвердить что ты не робот

Заявление SQL с несколькими SET и WHERE

Мне интересно, является ли это допустимым запросом:

UPDATE  table
SET ID = 111111259

WHERE ID = 2555

AND SET ID = 111111261

WHERE ID = 2724

AND SET ID = 111111263

WHERE ID = 2021

AND SET ID = 111111264

WHERE ID = 2017
4b9b3361

Ответ 1

НЕТ!

Вам нужно будет обрабатывать их отдельно

Update [table]
Set ID = 111111259
WHERE ID = 2555

Update [table]
Set ID = 111111261
WHERE ID = 2724

--...

Ответ 2

Лучший вариант - это несколько обновлений.

В качестве альтернативы вы можете сделать следующее, но рекомендуется НЕ:

UPDATE table
SET ID = CASE WHEN ID = 2555 THEN 111111259 
              WHEN ID = 2724 THEN 111111261
              WHEN ID = 2021 THEN 111111263
              WHEN ID = 2017 THEN 111111264
         END
WHERE ID IN (2555,2724,2021,2017)

Ответ 3

Нет. Это неверный запрос. У вас может быть только один оператор SET с несколькими полями, однако, также предложение WHERE

update table1 set field1=value1, field2=value2, field3=value3 where filed4=value5

Ответ 4

Нет, вот как вы это делаете:

UPDATE table SET ID = 111111259 WHERE ID = 2555

UPDATE table SET ID = 111111261 WHERE ID = 2724

UPDATE table SET ID = 111111263 WHERE ID = 2021

UPDATE table SET ID = 111111264 WHERE ID = 2017

Ответ 5

Нет, вам нужно будет создать отдельный запрос для каждого обновления.

Ответ 6

Нет. Вам придется делать отдельные обновления:

UPDATE  table
SET ID = 111111259
WHERE ID = 2555

UPDATE  table
SET ID = 111111261
WHERE ID = 2724

UPDATE  table
SET ID = 111111263
WHERE ID = 2021

UPDATE  table
SET ID = 111111264
WHERE ID = 2017

Ответ 7

так как sql те все строки, которые вы хотите, чтобы сделать, я бы сделал вам код вроде этого

Внутри управления Sql тоже выполняется запрос, и это должно работать.

UPDATE  table
SET ID = 111111259 WHERE ID = 2555    

UPDATE  table
SET ID = 111111261 WHERE ID = 2724

UPDATE  table
SET ID = 111111263 WHERE ID = 2021

UPDATE  table
SET ID = 111111264 WHERE ID = 2017

Ответ 8

Вы также можете использовать случай, например:

UPDATE  table
SET ID = case

when ID = 2555 then 111111259

when ID = 2724 then 111111261

when ID = 2021 then 111111263

when ID = 2017 then 111111264

else ID
end

Ответ 9

Используйте строку терминатора запроса и установите это в параметрах вашего клиентского приложения SQL. Я использую GO в качестве терминатора запросов.

Ваш SQL будет выглядеть следующим образом:

UPDATE table SET ID = 111111259 WHERE ID = 2555 GO
UPDATE table SET ID = 111111261 WHERE ID = 2724 GO
UPDATE table SET ID = 111111263 WHERE ID = 2021 GO
UPDATE table SET ID = 111111264 WHERE ID = 2017 GO

Это позволит вам сделать Ctrl + A и сразу запустить все строки.

Терминатор строки сообщает клиенту SQL, что инструкция обновления завершена, и перейти к следующей строке и обработать следующий оператор.

Надеюсь, что поможет