Résolution de tri de caractères illégaux dans MySql avec erreur de classement
En essayant de combiner deux sous-requêtes dans une requête SQL, vous pouvez rencontrer le message « Illégal erreur de mélange de classements". Cela se produit lorsque les colonnes impliquées dans des comparaisons ou des opérations ont des paramètres de jeu de caractères ou de classement différents.
Pour résoudre cette erreur, il est nécessaire de s'assurer que les colonnes utilisées dans la requête ont le même classement. Pour déterminer les colonnes concernées, consultez la requête suivante :
SELECT table_schema, table_name, column_name, character_set_name, collation_name FROM information_schema.columns WHERE collation_name = 'latin1_general_ci' ORDER BY table_schema, table_name,ordinal_position;
Cela affichera les colonnes avec le classement 'latin1_general_ci'. Pour résoudre l'erreur, convertissez les colonnes en conflit en classement « latin1_swedish_ci » à l'aide de cette requête :
ALTER TABLE tbl_name CONVERT TO CHARACTER SET latin1 COLLATE 'latin1_swedish_ci';
En rectifiant l'incompatibilité du classement, la requête peut être exécutée avec succès :
SELECT username, (SUM(rating)/COUNT(*)) as TheAverage, Count(*) as TheCount FROM ratings WHERE month='Aug' AND username IN (SELECT username FROM users WHERE gender =1) GROUP BY username HAVING TheCount > 4 ORDER BY TheAverage DESC, TheCount DESC
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!