Mysql在执行代码时抛出错误

Mysql在执行代码时抛出错误,mysql,sql,mysql-workbench,Mysql,Sql,Mysql Workbench,这是我的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, '

这是我的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中执行此操作时,我得到了
错误代码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

您的问题是由于最终查询的结构造成的。我猜,
delc
的一个或多个值有一个引号或反斜杠

最简单的解决方案就是只接受“普通”名称来消除这些问题


这些字符可以作为标识符和字符串,因此代码应该可以工作。

显示您实际执行的查询,即
@sql
的值。错误可能会很明显。这就是我要执行的全部任务:在第一次查询中,您甚至不必使用
COALESCE
;只需将
ELSE
值设置为
n
。你能帮我回答这个问题吗
select . . .
from inputstr
where delc regexp '^[a-zA-Z0-9_]+$'