2016-03-24 3 views
0

Я просмотрел множество сообщений на этом сайте и других, и я не могу понять это. Я пытаюсь выбрать список столбцов из таблицы, а затем использовать их в запросе, подобный следующему:динамически отображает список столбцов в MySQL

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, и я не знаю, как их отлаживать. Я бы предпочел сделать это без использования хранимой процедуры, если это возможно, но если это необходимо, все в порядке.

Я попытался с помощью подготовить заявление, и я попытался выполнить заявление, но я не мог получить ни работать.

ответ

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; 
+0

Я запустил это, и он вернул список имен столбцов для каждой строки набора результатов, а не фактических данных. Но я думаю, что мы должны быть рядом. – raphael75

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%')); 

set @qry = concat('select ', @cols, ' from REPORTS.t_labor'); 

PREPARE stmt1 FROM @qry; 

EXECUTE stmt1; 

DEALLOCATE PREPARE stmt1; 

Если бы кусок вместе ответов, по крайней мере 5 различных сообщений, подобных этому вопросу плюс ответ доктора Освальдо в.

+0

рад, что вы это сделали ;-) –

Смежные вопросы