【发布时间】:2014-11-17 02:04:01
【问题描述】:
(SELECT CONCAT(@I, '_Delta') FROM table WHERE id_tb = @ID)
我将上述语句用作 INSERT 的一部分。问题是整行都被转换为 @I 的值(这是一个索引,值是 0、1、2、...)。所以,我没有得到 SELECT 的输出,而是得到 0, 1, 2, ...
CONCAT 的预期值类似于"0_Delta",然后是"1_Delta" 等。用其中一个替换 CONCAT。
任何 cmets 将不胜感激。谢谢!
[代码]
如果存在则删除表 xxx_tb; 创建表 xxx_tb ( i_Validity INT, 达美INT );
如果在 AFTER_INSERT_ON_tb_in 之后存在则删除触发器; 分隔符 $$ 在 AFTER_INSERT_ON_tb_in 之后创建触发器 插入 tb_in 后 每一行 开始
SET @ID = NEW.id_tb;
SET @TYPE = (SELECT Type FROM header WHERE id_tb = @ID);
IF @TYPE = 'abcd' THEN
SET @SAMPLES = (SELECT SampleNumber FROM table WHERE id_tb = @ID);
IF(@SAMPLES > 1) THEN
SET @I = 0;
WHILE(@I < @SAMPLES) DO
INSERT INTO xxx_tb
(
i_Validity,
Delta
)
VALUES
(
(SELECT 0_Validity FROM table WHERE id_tb = @ID),
(SELECT CONCAT(@I, '_Delta') FROM table WHERE id_tb = @ID)
);
SET @I = @I + 1;
END WHILE;
END IF;
END IF;
END$$
分隔符; [代码]
【问题讨论】:
-
请显示整个
INSERT查询。 -
和表中的字段
-
我同意。如果你有它在括号中,它不会输出选择的行,而是准备它以供在更大的语句中使用。尝试不带括号或显示完整的声明。
-
Garr Godfrey,请问您指的是哪个括号?这(i_Validity,Delta)?
标签: mysql