Запрос SQL Server: ОБНОВЛЕНИЕ УСТАНОВИТЬ один столбец - PullRequest
0 голосов
/ 03 октября 2018

Есть ли способ выполнить команду SET IN в обновлении запроса?

UPDATE table_a 
SET status IN (A, B, C) 
WHERE id IN (1, 2, 3)

Я выполнил синтаксис, но появилась ошибка:

Неверный синтаксис рядом сКлючевое слово "IN".

Ответы [ 4 ]

0 голосов
/ 03 октября 2018

Использование оператора case для обновления значения, основанного на условии, например «case когда id = 1, затем« A », когда ID = 2, затем« B »и т. Д.».Ex.обновить tab_a установить статус = случай, когда id = 1, затем «A», когда id = 2, затем «B», когда id = 3, затем «C» заканчивается, где id в (1,2,3)

, если вы хотитеобновить полную таблицу со значением по умолчанию, отличным от 1,2,3, затем обновить tab_a установить статус = случай, когда id = 1, затем «A», когда id = 2, затем «B», когда id = 3, затем «C», еще »Z 'end

0 голосов
/ 03 октября 2018

Если вам нужно несколько обновлений на основе идентификатора в одном запросе

UPDATE table_a
    SET status = CASE id
        WHEN 1 THEN A
        WHEN 2 THEN B
        WHEN 3 THEN C
    END
WHERE id IN (1,2,3)

Я полагаю, это ваше требование, установка другого статуса на основе идентификатора

0 голосов
/ 03 октября 2018

Вы также можете использовать это:

INSERT into table_a (id, status)
VALUES
    (1, 'A'),
    (2, 'B'),
    (3, 'C')
ON DUPLICATE KEY UPDATE
    status = VALUES(status);
0 голосов
/ 03 октября 2018

вы допустили ошибку в предложении set ниже - правильный sql

UPDATE table_a 
SET status='A'
WHERE id IN (1,2,3)
...