从连接字符串中选择动态列名称

时间:2016-04-14 22:46:03

标签: mysql concat

我有几个像这样构建的列:

|  FOOD_AUS  | FOOD_JAP | FOOD_KOR | FOOD_CAN |

有没有办法动态选择它?我的意思是,例如,如果用户只输入文字AUS FOOD_AUS下的所有行都会返回。

1 个答案:

答案 0 :(得分:1)

这是可行的,但不是在单个SQL调用中。您可以做的是查询information_schema.columns view以查找表中的列名,然后使用字符串变量中的结果创建一个sql语句,并通过prepared statement执行它。

我会按照以下几行开始:

select @c:=group_concat(column_name) as col_names
    from information_schema.columns
    where table_name='yourtable' and column_name like '%aus%'
    group by table_name;
set @sql:=concat('select ',@c, ' from yourtable');
prepare stmnt1 from @sql;
execute stmnt1;
deallocate prepare stmnt1;