2013-04-02 4 views
-1

Мне нужно выбрать все столбцы из таблицы «билет», кроме одного столбца «depname» Следующий подготовленный оператор не работает должным образом.выберите все столбцы, кроме одного

PREPARE stmt1 FROM 'SELECT ? from magon.ticket limit 2'; 

select GROUP_CONCAT(COLUMN_NAME) into @clm from COLUMNS where TABLE_SCHEMA = 'magon' and TABLE_NAME = 'ticket' and COLUMN_NAME NOT IN ('depname') GROUP BY TABLE_SCHEMA, TABLE_NAME; 

execute stmt1 using @clm; 

Он возвращает список столбцов дважды (из-за лимита 2), но не фактические данные.

ответ

5

К сожалению, вы не можете параметризовать имя столбца, а также имя таблицы, потому что они являются идентификаторами. Но вы можете объединить значения в строке,

SET @colName = (SELECT GROUP_CONCAT(COLUMN_NAME) 
       FROM COLUMNS 
       WHERE TABLE_SCHEMA = 'magon' AND 
         TABLE_NAME = 'ticket' AND 
         COLUMN_NAME NOT IN ('depname') 
       GROUP BY TABLE_SCHEMA, TABLE_NAME); 
PREPARE stmt1 FROM CONCAT('SELECT ', @colName ,' FROM magon.ticket LIMIT 2'); 
EXECUTE stmt1; 
DEALLOCATE PREPARE stmt1; 
Смежные вопросы