Isso geralmente é causado pela comparação de duas cadeias de ordenação incompatíveis ou pela tentativa de selecionar dados de ordenação diferente em uma coluna combinada.
A cláusula
COLLATE
permite especificar o agrupamento usado na consulta. Por exemplo, o seguinte
WHERE
cláusula sempre dará o erro que você postou:WHERE 'A' COLLATE latin1_general_ci = 'A' COLLATE latin1_general_cs
Sua solução é especificar um agrupamento compartilhado para as duas colunas na consulta. Aqui está um exemplo que usa o
COLLATE
cláusula:SELECT * FROM table ORDER BY key COLLATE latin1_general_ci;
Outra opção é usar o
BINARY
operador:
BINARY str é a abreviação de CAST(str AS BINARY).
Sua solução pode ser algo assim:
SELECT * FROM table WHERE BINARY a = BINARY b;
ou,
SELECT * FROM table ORDER BY BINARY a;