将变量设置为列名mysql

时间:2014-07-23 20:56:32

标签: mysql sql variables

我正在尝试遍历一个表 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;

1 个答案:

答案 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");