sql >> Databasteknik >  >> RDS >> Mysql

STORT OSIGNERAD VÄRDE ÄR utanför intervallet Min SQL

Läs "Utom räckvidd och överflödeshantering ".
Det står:

mysql> SELECT 9223372036854775807 + 1;

ERROR 1690 (22003): BIGINT value is out of range in '(9223372036854775807 + 1)'

För att åtgärden ska lyckas i detta fall, konvertera värdet till unsigned;

mysql> SELECT CAST(9223372036854775807 AS UNSIGNED) + 1;
+-------------------------------------------+
| CAST(9223372036854775807 AS UNSIGNED) + 1 |
+-------------------------------------------+
|                       9223372036854775808 |
+-------------------------------------------+

En ändring av en del av din fråga, enligt följande, skulle lösa problemet.

( CAST( quantity AS SIGNED ) - COUNT( game_moblist.spawn_id ) ) AS quantity_to_spawn

Annars kan du behöva ändra sql_mode på osignerade operationer.

mysql> SET sql_mode = 'NO_UNSIGNED_SUBTRACTION';

och kör sedan din fråga för att få önskad utdata.

Se även ett liknande inlägg besvarat på ett forum

  1. Varför matchar _ (understreck) - (bindestreck)?

  2. JPA Tabellnamn med versaler

  3. MySQL kundvagnsstruktur

  4. Hur man ställer in max_connections i MySQL Programmatically