Mysql在执行代码时抛出错误
这是我的sql代码: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, '
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_]+$'