我有几个像这样构建的列:
| FOOD_AUS | FOOD_JAP | FOOD_KOR | FOOD_CAN |
有没有办法动态选择它?我的意思是,例如,如果用户只输入文字AUS
FOOD_AUS
下的所有行都会返回。
答案 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;