2013-04-02 2 views
-1

하나의 열 "depname"을 제외하고 "ticket"테이블에서 모든 열을 선택해야합니다. 다음 준비 문은 예상대로 작동하지 않습니다.하나만 제외하고 모든 열 선택

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; 

실제 데이터가 아닌 (두 번째로 인해) 열 목록을 두 번 반환합니다.

답변

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; 
관련 문제