Oli*_*ver 41 mysql collation mysql-error-1267
刚刚从上一个问题得到了这个答案,它有效!
SELECT username, (SUM(rating)/COUNT(*)) as TheAverage, Count(*) as TheCount
FROM ratings WHERE month='Aug' GROUP BY username HAVING TheCount > 4
ORDER BY TheAverage DESC, TheCount DESC
Run Code Online (Sandbox Code Playgroud)
但当我坚持这个额外的位时,会出现这个错误:
文档#1267 - 操作'='的非法混合排序(latin1_swedish_ci,IMPLICIT)和(latin1_general_ci,IMPLICIT)
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
Run Code Online (Sandbox Code Playgroud)
该表是:
id, username, rating, month
Dea*_*her 83
以下是如何检查哪些列是错误的排序规则:
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;
Run Code Online (Sandbox Code Playgroud)
这是修复它的查询:
ALTER TABLE tbl_name CONVERT TO CHARACTER SET latin1 COLLATE 'latin1_swedish_ci';
Run Code Online (Sandbox Code Playgroud)
Rot*_*otS 15
[MySQL的]
在这些(非常罕见的)情况下:
值不是来自表,而是来自显式枚举,例如:
SELECT 1 AS编号UNION ALL SELECT 2 UNION ALL SELECT 3
您可以使用CAST或CONVERT比较不同表之间的值:
CAST('my text' AS CHAR CHARACTER SET utf8)
CONVERT('my text' USING utf8)
Run Code Online (Sandbox Code Playgroud)
请参阅MySQL网站上的CONVERT和CAST文档.
我在PhpMyadmin上遇到了同样的错误,并且这里指出的解决方案对我有用
ALTER TABLE table CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci
Run Code Online (Sandbox Code Playgroud)
非法混合的归类MySQL错误 我也建议使用General而不是瑞典语,因为那是默认的,除非你的应用程序使用瑞典语,否则不使用该语言.