Mélange illégal de classements dans MySQL : un guide détaillé de résolution
Lorsque vous travaillez sur une requête impliquant plusieurs tables, vous pouvez rencontrer l'erreur "Mélange illégal de classements." Ce problème survient lorsque les jeux de caractères et les classements utilisés dans les tables et les colonnes impliquées dans la requête ne correspondent pas.
Pour résoudre cette erreur, vous devez identifier les colonnes spécifiques à l'origine de la non-concordance et modifier leurs classements pour qu'ils correspondent. le reste des tableaux. Voici un guide étape par étape :
Identification des colonnes ne correspondant pas :
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;
Cette requête identifiera toutes les colonnes de votre base de données qui utilisent le classement 'latin1_general_ci'.
Conversion des classements :
Une fois que vous avez Si vous avez identifié les colonnes qui ne correspondent pas, vous pouvez convertir leurs classements pour qu'ils correspondent au reste des tables à l'aide de la commande ALTER TABLE. Par exemple, pour convertir la colonne « nom d'utilisateur » de la table « utilisateurs » en « latin1_swedish_ci », utilisez la commande suivante :
ALTER TABLE users CONVERT TO CHARACTER SET latin1 COLLATE 'latin1_swedish_ci';
Remarque : Le jeu de caractères et le classement du La colonne de clé primaire doit correspondre à celle de la colonne de clé étrangère dans les tables associées pour éviter les erreurs de classement.
Exemple de requête :
Voici une version révisée de votre requête d'origine avec le problème de classement résolu :
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;
En suivant ces étapes, vous pouvez résoudre l'erreur « Mélange illégal de classements » et vous assurer que vos requêtes fonctionnent correctement avec des jeux de caractères et des classements cohérents.
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!