我查看了本网站和其他人的很多帖子,我无法弄清楚这一点。我正在尝试从表中选择列列表,然后在类似于此的查询中使用它们:
set @cols = (select group_concat(column_name) as 'col_list' FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE (`TABLE_SCHEMA` = 'REPORTS' AND `TABLE_NAME` = 't_labor' AND column_name like '%host%'));
set @s = 'select ' + @cols + ' from REPORTS.t_labor';
prepare stmt from @s;
execute stmt;
deallocate prepare stmt;
-- execute ('select ' + @cols + ' from REPORTS.t_sales');
我正试图按原样运行上述语句。我也试过创建一个存储过程,但我之前从未使用MySQL中的存储过程,我不知道如何调试它们。如果可能的话,我宁愿不使用存储过程这样做,但是如果有必要那就没问题。
我尝试使用准备语句,我尝试了执行语句,但我无法继续工作。
答案 0 :(得分:1)
在这里疯狂猜测,但试试这个。
set @cols = (select group_concat(column_name) as 'col_list' FROM `INFORMATION_SCHEMA`.`COLUMNS` WHERE (`TABLE_SCHEMA` = 'REPORTS' AND `TABLE_NAME` = 't_labor' AND column_name like '%host%'));
PREPARE stmt1 FROM 'select ? from REPORTS.t_labor';
EXECUTE stmt1 USING @cols;
DEALLOCATE PREPARE stmt1;
答案 1 :(得分:1)
终于明白了:
Û
必须拼凑至少5个与此问题类似的帖子以及OSWaldo博士的回复。