MySQL: Errore 1221 — uso scorretto di UNION e ORDER BY
La clausola `ORDER BY` applicata a singoli rami di una `UNION` senza racchiudere le singole SELECT tra parentesi tonde genera un errore di sintassi del parser.
Categoria
Articoli tecnici organizzati per gruppo funzionale.
La clausola `ORDER BY` applicata a singoli rami di una `UNION` senza racchiudere le singole SELECT tra parentesi tonde genera un errore di sintassi del parser.
Tutti i rami di un'istruzione `UNION` o `UNION ALL` devono restituire esattamente lo stesso numero di campi selezionati.
Ogni sottoquery utilizzata nella clausola `FROM` come tabella virtuale derivata deve obbligatoriamente avere un alias assegnato (es. `FROM (SELECT ...) AS t`).
Il valore che si tenta di inserire supera il valore minimo o massimo consentito per il tipo di dato della colonna (ad esempio un intero superiore a 127 in un campo `TINYINT` con strict mode attivo).
Compare in strict mode quando una stringa non numerica viene inserita in un campo intero oppure un valore ENUM non valido viene forzato nella colonna.
Si verifica durante join o confronti `=` tra due colonne o espressioni che utilizzano collation incompatibili (es. utf8mb4_unicode_ci e utf8mb4_general_ci); si risolve allineando le collation con `COLLATE`.
L'istruzione `CREATE PROCEDURE` o `CREATE FUNCTION` fallisce perché esiste già una routine con lo stesso nome nello schema; utilizzare `DROP PROCEDURE IF EXISTS` prima della definizione.
La funzione definita dall'utente (UDF o Stored Function) chiamata nella query non esiste nel database o è stato inserito uno spazio tra il nome della funzione e la parentesi aperta con `IGNORE_SPACE` disattivato.