这是一个很长的选择,所以我不会显示整个代码,但是问题在这里:
SET @idcounter=0;
SET @SQL = CONCAT('
CREATE TABLE temp_',CONCAT(InvNum),CONCAT('(
SELECT
'),CONCAT(@idcounter:=@idcounter+1),CONCAT(' as ID,
/* Show Output columns */
/*
而不是1、2、3等。值只能给出1个。所以我尝试了其他解决方案。
SET @SQL = CONCAT('SET ',CONCAT(@idcounter=0),CONCAT(';
CREATE TABLE temp_',CONCAT(InvNum),CONCAT('(
SELECT
'),CONCAT(@idcounter:=@idcounter+1),CONCAT(' as ID,
/* Show Output columns */
/*
但这给出了一个错误:错误代码:1064。您的SQL语法中有一个错误;检查与您的MySQL Server版本相对应的手册,以获取正确的语法,以在第1行1 0.015 sec
处使用" null"附近。老实说,我不再知道该怎么办。我想念什么?
" Invnum"是一个工作参数,这不是问题。
问题是由使用
引起的CONCAT('(SELECT '), CONCAT(@idcounter:=@idcounter+1)
这会导致SELECT
语句在执行时插入@idcounter
变量值,而不是您所需的SELECT
行。
将@SQL
设置为:
CREATE TABLE temp_123
SELECT 1 as ID
您只需要删除冗余CONCAT()
调用。
SET @idcounter=0;
SET @SQL=CONCAT('
CREATE TABLE temp_',InvNum, '
SELECT @idcounter:=@idcounter+1 as ID')
将@SQL
设置为:
CREATE TABLE temp_123
SELECT @idcounter:=@idcounter+1 as ID