Я хочу поменять значение столбца в двух разных строках на сервере Microsoft SQL - PullRequest
4 голосов
/ 30 апреля 2010

Я хочу выполнить следующие два SQL-запроса в Microsoft SQL SERVER

UPDATE Partnerships SET sortOrder = 2 WHERE sortOrder = 1;
UPDATE Partnerships SET sortOrder = 1 WHERE sortOrder = 2;

Единственная проблема в том, что я не допускаю, чтобы sortOrder содержал одно и то же значение, это уникальный ключ. Как я могу обойти это, потому что первый запрос нарушает правило уникального ключа и завершается? Или мне придется избавиться от правила уникального ключа, которое у меня есть?

Спасибо!

1 Ответ

13 голосов
/ 30 апреля 2010

Используйте CASE и выполните обе строки за один раз. Вам понадобится одно предложение CASE на каждое значение ключа фильтра:

UPDATE Partnerships
SET sortOrder = CASE WHEN sortOrder = 1 THEN 2 ELSE 1 END
WHERE sortOrder IN (1, 2)

Слегка дерзкий:

UPDATE Partnerships
SET sortOrder = 3-sortOrder
WHERE sortOrder IN (1, 2)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...