Mysql
 sql >> Base de données >  >> RDS >> Mysql

Dépannage d'une erreur de mélange illégal de classements dans mysql

Cela est généralement dû à la comparaison de deux chaînes de classement incompatible ou à la tentative de sélection de données de classement différent dans une colonne combinée.

La clause COLLATE permet de spécifier le classement utilisé dans la requête.

Par exemple, le WHERE suivant clause donnera toujours l'erreur que vous avez postée :

WHERE 'A' COLLATE latin1_general_ci = 'A' COLLATE latin1_general_cs

Votre solution consiste à spécifier un classement partagé pour les deux colonnes de la requête. Voici un exemple qui utilise le COLLATE clause :

SELECT * FROM table ORDER BY key COLLATE latin1_general_ci;

Une autre option consiste à utiliser le BINARY opérateur :

BINARY str est le raccourci pour CAST(str AS BINARY).

Votre solution pourrait ressembler à ceci :

SELECT * FROM table WHERE BINARY a = BINARY b;

ou,

SELECT * FROM table ORDER BY BINARY a;