MySQL условное обновление с использованием IN - PullRequest
1 голос
/ 20 января 2010

У меня есть таблица базы данных со столбцом с именем признак , который используется для выделения избранного содержимого на странице. В настоящее время я использую два оператора SQL для включения / выключения показанных строк следующим образом:

-- Reset everything to non-featured
UPDATE tbl SET featured = '0'; 

-- Now set the selected rows as featured.
UPDATE tbl SET featured = '1' WHERE id IN (4, 10, 21);  

Можно ли объединить оба этих слова в одно утверждение?

Ответы [ 3 ]

7 голосов
/ 20 января 2010

Использование:

UPDATE tbl
   SET featured = CASE 
                    WHEN id IN (4, 10, 21) THEN '1'
                    ELSE '0'
                  END;
4 голосов
/ 20 января 2010

Использование:

UPDATE tbl SET featured = id IN (4, 10, 21);  

[ПРАВИТЬ]

@ OMG Пони:

, что работает, вы можете воспользоваться тем, чтологические условия в Mysql могут быть напрямую сопоставлены с целым числом.

в Postgresql, вам нужно это сделать, необходимо привести логическое значение к целому числу:

update tbl set featured = (id in ('b','d'))::int
0 голосов
/ 20 января 2010

Да, вы можете объединить оба из них в одно утверждение.

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