MySQL使用GROUP_CONCAT拼接多字段触发SQL语法错误如何解决?
问题原因
报错和字符转义无关,是SQL语法使用错误:
- MySQL的
CASE表达式的THEN后仅支持返回单个值,你直接并列写r.formtime, '-', r.book_hours属于多表达式并列,不符合语法要求 - 你需要先将多个要拼接的内容用
CONCAT()函数合并为单个字符串,再放到THEN后即可
修正后的代码
$aColumns = array( "t.tablename", "r.book_hours", "GROUP_CONCAT(CASE WHEN r.reserveday = CURDATE() THEN CONCAT(r.formtime, '-', r.book_hours) ELSE NULL END ORDER BY r.formtime ASC) AS oldBookTime");
额外说明
如果你需要自定义GROUP_CONCAT不同条目之间的分隔符,可以在ORDER BY子句后加SEPARATOR '你想要的分隔符',默认分隔符是英文逗号。
内容的提问来源于stack exchange,提问作者Eng Keat Ang
相关产品推荐
相关产品推荐

