sql >> Databáze >  >> RDS >> Mysql

Jak použít If Then Else v dotazu na aktualizaci MySQL?

Myslím, že jsi tam byl na 99 %:

UPDATE table
SET A = IF(A > 20, 20, IF(A < 20 && A > 1, A, 0))
WHERE A IS NOT NULL;

Přidejte && A > 1 na druhý příkaz IF a vaše třetí podmínka je splněna.

Upravit:

Podle komentáře @Andre k otázce a návrhu, že vnořené IF je obtížné číst, můžete to udělat také jako několik dotazů, které nedělají žádnou zbytečnou práci a jsou čitelné:

UPDATE table SET A = 20 WHERE A > 20;
UPDATE table SET A = 0 WHERE A <= 1;

Když má A hodnotu NULL, nesplňuje ani jednu z těchto podmínek, a proto není nutné uvádět, že A nemá hodnotu NULL.

Dále není potřeba třetí podmínka, jak navrhl @Andre. Pokud je A mezi 1 a 20, zůstane tak, jak je.

Konečně nastavení A na 0, kde A je menší nebo rovno 1, se zdá neobvyklé. Hodnoty 1 se změní na 0. Pokud máte v úmyslu jednoduše nastavit hodnoty menší než 1 (včetně záporných hodnot) na 0, měli byste zaměnit < pro <= .



  1. Začínáme s fulltextovým vyhledáváním SQLite

  2. Nyní nebo brzy jsou k dispozici další online operace

  3. Jak získat věk z pole D.O.B v MySQL?

  4. Pomalá migrace do cloudu