Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL условно АКТУАЛИЗИРА булевите стойности на колоните на редовете въз основа на бял списък с идентификатори

Не сте ли забравили да направите „ELSE“ в изявлението на case?

UPDATE my_table
    SET field = CASE
        WHEN id IN (/* true ids */) THEN TRUE
        WHEN id IN (/* false ids */) THEN FALSE
        ELSE field=field 
    END

Без ELSE предполагам, че веригата за оценка спира в последното КОГА и изпълнява тази актуализация. Освен това не ограничавате редовете, които се опитвате да актуализирате; ако не направите ELSE, трябва поне да кажете на актуализацията да актуализира само редовете, които искате, а не всички редове (както правите вие). Вижте клаузата WHERE по-долу:

  UPDATE my_table
        SET field = CASE
            WHEN id IN (/* true ids */) THEN TRUE
            WHEN id IN (/* false ids */) THEN FALSE
        END
  WHERE id in (true ids + false_ids)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Случайна претеглена селекция на събитие

  2. не е разрешено да върне набор от резултати от тригер mysql

  3. Оттеглено разширение MySQL в PHP 5.5.x

  4. Неуспешно свързване с MySQL на localhost:3306 с потребителски root

  5. Балансиране на натоварването на PostgreSQL и подобрения на ProxySQL - ClusterControl 1.5