我一直在尝试在mysql中创建一个简单的select语句循环来减少代码。我已经开始用这个了 CONCAT()
但是,这会导致程序停止/失败。例如(其中k是循环计数器): CONCAT('SELECT (Child_', k, ' INTO @Age_Child_', k, ' FROM lookup_childage WHERE ModYear = ModYear_var LIMIT 1)');
为了诊断这个问题,我只是尝试将select语句(不带串联的循环变量)放在一个字符串中,然后执行。虽然我可以让它对简单的语句起作用,但对以下语句不起作用:
SET @queryString = CONCAT('SELECT Child_1 INTO @Age_Child_1 FROM lookup_childage WHERE ModYear = ModYear_var LIMIT 1');
PREPARE stmt FROM @queryString;
EXECUTE stmt;
有人知道为什么 @queryString
包含 CONCAT()
语句将不执行/导致过程失败?
1条答案
按热度按时间bbmckpt71#
热释光;博士,你要写的陈述有
SELECT(rest of statement) LIMIT 1
. 它应该有这样的形式SELECT rest of statement LIMIT 1
.看起来您想创建变量列名,嗯,因为
lookup_childage
表是非规范化的。我猜那个表有这些列。看来你希望得到一个
@queryString
包含此类内容的值:只有
4
s是可变的。所以要得到你想要的那根线