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

Mysql dotaz:snižte hodnotu o 1

Nepotřebujete žádné uvozovky.

UPDATE my_table SET my_field = my_field - 1 WHERE `other` = '123'

Abychom pochopili, je to jako klasická afektovanost v jakémkoli jazyce:„Chci my_field je rovno my_field (aktuální hodnota) mínus 1 .
Pokud zadáte uvozovky, znamená to „chci my_field je rovno řetězci:

  1. 'my_field-1' (pro váš první dotaz)
  2. 'my_field' - 1 (což nic neznamená, alespoň pro mě:jaký je výsledek řetězce mínus celé číslo?)
  3. '-1' , která bude převedena na -1, pokud má vaše pole typ INTEGER se znaménkem.

V některých případech (pokud máte v názvu pole mezery nebo speciální znaky), můžete název pole obklopit `backticks`:

UPDATE my_table SET `my_field` = `my_field` - 1 WHERE  other = '123'


  1. SQLSTATE[HY000]:Obecná chyba:3780 Odkazující sloupec 'user_id' a odkazovaný sloupec 'id' v cizím klíči nejsou kompatibilní

  2. SQL-alchymie:ValueError příliš mnoho hodnot k rozbalení?

  3. Automatické spuštění serveru MySQL na Mac OS X Yosemite/El Capitan

  4. Připojení PHP na Linuxu k Microsoft Access na Windows Share