sql >> Database teknologi >  >> RDS >> Mysql

STOR USIGNET VÆRDI ER uden for rækkevidde Min SQL

Læs venligst "Udenfor rækkevidde og overløbshåndtering ".
Der står:

mysql> SELECT 9223372036854775807 + 1;

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

For at aktivere handlingen til at lykkes i dette tilfælde skal du konvertere værdien til usigneret;

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

En ændring af en del af din forespørgsel, som følger, ville løse problemet.

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

Ellers kan det være nødvendigt at ændre sql_mode på usignerede operationer.

mysql> SET sql_mode = 'NO_UNSIGNED_SUBTRACTION';

og kør derefter din forespørgsel for at få det ønskede output.

Se også et lignende indlæg besvaret på et forum

  1. Hent data for flere enkeltstående eller reference uden lignende operatør

  2. Eksporter SQLite-database til en CSV-fil

  3. Find ud af, om en tabel er opdelt i SQL Server (T-SQL)

  4. MySQL DELETE FROM med UNION-underforespørgsel efter IN-tilstand