这是我的sql代码:
SET @sql = NULL;
SELECT
GROUP_CONCAT(DISTINCT
CONCAT(
'COALESCE(MAX(CASE WHEN delc = ''',
delc,
''' then ''y'' end),''n'') AS ',
delc
)
) INTO @sql
FROM inputr;
SET @sql = CONCAT('SELECT tem, ', @sql, '
FROM inputr
GROUP BY tem');
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
当我执行这个命令的时候 mysql workbench 6.3
,我得到 error code 1064
问题是什么?这是错误:
PREPARE stmt FROM @sql Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'plan,COALESCE(MAX(CASE WHEN delc = 'sil' then 'y' end),'n') AS sil,COALE' at line 1 0.000 sec
1条答案
按热度按时间lh80um4z1#
您的问题是由于最终查询的结构造成的。我猜一个或多个
delc
有单引号或反斜杠。最简单的解决方案就是通过只接受“普通”名称来消除这些问题
这些字符被允许作为标识符和字符串,因此代码应该可以工作。