【发布时间】:2019-08-20 06:51:29
【问题描述】:
首先,英语不是我的母语,如果我犯了一些错误,请原谅我。 当我尝试将数据从 mysql5.7 推送到 Redis 时出现此问题,这是关于 MySQL 操作 concat。
没有UNION ALL,我把它分成2个SQL,它可以工作。但是一旦我用UNION ALL'运行它,就会发生错误。
[Err] 1271 - 操作 concat 的排序规则的非法混合
SELECT CONCAT(
"*4\r\n",
'$',LENGTH(redis_cmd),'\r\n',redis_cmd,'\r\n',
'$',LENGTH(redis_key),'\r\n',redis_key,'\r\n',
'$',LENGTH(redis_score),'\r\n',redis_score,'\r\n',
'$',LENGTH(redis_val),'\r\n',redis_val,'\r'
)
FROM (
SELECT
'ZADD' AS redis_cmd,
'GS_TM' AS redis_key,
s1.QSH AS redis_score,
CONCAT(s1.GS,':',s1.QSH,':0') AS redis_val
FROM
gstmfw s1
UNION ALL
SELECT
'ZADD' AS redis_cmd,
'GS_TM' AS redis_key,
s2.ZZH AS redis_score,
CONCAT(s2.GS,':',s2.ZZH,':1') AS redis_val
FROM
gstmfw s2
) AS gstmfw;
我想在一个 sql 中完成整个工作,但不是解决方案。 最后,感谢您的阅读和帮助。
【问题讨论】:
-
您的表/列有不同的排序规则。
标签: mysql