我有一个“参数”表,在其数据中包含一个列名(“col1”),它是我“mydata”表中的一列。
parameters
==========
which_column
-----------
"col1"
mydata
======
col1 col2 col3
--------------------
6 7 42
1 2 3
5 9 11
我需要编写一个mysql视图,根据mydata中指定的列选择“mydata”
我想做类似的事情:
create view myview as
select mydata.(select which_column from parameters) from mydata
我有24个不同的列名,因此我不想手动测试每个案例。
答案 0 :(得分:1)
如果表参数只包含一个带有列名的行,则该函数应该起作用:
SELECT which_column FROM parameters INTO @param;
SET @qry = CONCAT('SELECT ', @param, ' FROM mydata');
PREPARE stmt1 FROM @qry;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
答案 1 :(得分:0)
SELECT
IF(@parameter='col1',col1,IF(@parameter='col2',col2,IF(@parameter='col3',col3,null))) AS mycol
FROM
tablename;
这是q& d,但它确实有效。