我正在尝试遍历一个表 adl_weight ,该表的列中包含另一个表 adl_activities 中列的确切名称。我试图从表中获取列名称并使用它来获取第二个表上的列的值。
是否可以使用mysql执行此操作?我试图使用准备好的陈述,但到目前为止这些都没有用。
set i = 1;
select count(*) from adl_weight into n;
WHILE(i<n) DO
set tmp_condition =(select user_condition from adl_weight where row_number = i);
set tmp_score = (select tmp_condition from adl_activities where userid = id);
if(tmp_score > 0) then
#do items here
end if;
END WHILE;
答案 0 :(得分:1)
如果我理解正确,您需要获取一个名称在变量中定义的列。
问题是mysql不允许您将变量插入除值之外的任何内容,但您可以创建一个新字符串,其中包含一个命令,其中变量的值为列名并执行该命令。这是一个例子:
SET @sql = CONCAT("SELECT `", @columnName, "` FROM tableA");
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
编辑: 如果您想改为选择变量,可以使用:
SET @sql = CONCAT("SELECT ", @columnName, "` FROM tableA INTO @result");