如何编写使用表中数据的列名的mysql视图

如何编写使用表中数据的列名的mysql视图,mysql,Mysql,我有一个“parameters”表,在其数据中包含一个列名(“col1”),它是我的“mydata”表中的一列 我需要编写一个mysql视图,根据mydata中指定的列从“mydata”中进行选择 编辑: 我想做一些类似的事情: create view myview as select mydata.(select which_column from parameters) from mydata 我有24个不同的列名,所以我不想手动测试每种情况 SELECT IF(@param

我有一个“parameters”表,在其数据中包含一个列名(“col1”),它是我的“mydata”表中的一列

我需要编写一个mysql视图,根据mydata中指定的列从“mydata”中进行选择

编辑: 我想做一些类似的事情:

create view myview as
    select mydata.(select which_column from parameters) from mydata
我有24个不同的列名,所以我不想手动测试每种情况

SELECT 
  IF(@parameter='col1',col1,IF(@parameter='col2',col2,IF(@parameter='col3',col3,null))) AS mycol
FROM
  tablename;
这是q&d,但它是有效的


这是q&d,但它可以工作。

如果表参数只包含一行的列名,则应该可以工作:

SELECT which_column FROM parameters INTO @param;
SET @qry = CONCAT('SELECT ', @param, ' FROM mydata');
PREPARE stmt1 FROM @qry;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;

如果表参数只包含一个列名为的行,则应该可以:

SELECT which_column FROM parameters INTO @param;
SET @qry = CONCAT('SELECT ', @param, ' FROM mydata');
PREPARE stmt1 FROM @qry;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;

您可能可以使用动态sql。。。然而,这些数据会发生变化吗?您要处理的价值观是什么/有多少。。相等、范围等。。。您要查询的是多行不同列吗?您可能可以使用动态sql。。。然而,这些数据会发生变化吗?您要处理的价值观是什么/有多少。。相等、范围等。。。您要查询的是具有不同列的多行吗?这如何进入视图?抱歉,我忽略了视图要求,您可以使用存储函数而不是视图吗?这如何进入视图?抱歉,我忽略了视图要求,您可以使用存储函数而不是视图吗?