programing

information_schema를 사용합니다.선택 검색에서 열

javamemo 2023. 10. 17. 19:57
반응형

information_schema를 사용합니다.선택 검색에서 열

하나를 제외한 모든 열을 선택하려고 하므로 다음을 사용합니다.

select COLUMN_NAME 
from information_schema.COLUMNS 
where TABLE_NAME='report' and COLUMN_NAME != 'date';

올바른 결과를 반환하지만 다음을 사용하여 적용하려고 할 때:

select 
(
 select COLUMN_NAME 
 from information_schema.COLUMNS 
 where TABLE_NAME='report' and COLUMN_NAME != 'date'
) 
from report limit 1;

그것은 다음과 같은 오류를ERROR 1242 (21000): Subquery returns more than 1 row

그룹화_concatit을 시도했지만 열만 반환됩니다(쿼리).

select 
(
 select group_concat(COLUMN_NAME) 
 from information_schema.COLUMNS 
 where TABLE_NAME='report' and COLUMN_NAME != 'date'
) 
from risk_assessment.report limit 1;

| (select group_concat(COLUMN_NAME) from information_schema.COLUMNS where TABLE_NAME='report' and COLUMN_NAME != 'date')                                                            |
+-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| id,ref,creator,status,username,title,site,location,comment,id,status,type,chemical_name,description,title,creator,frequency,location,form,storage,comments,comments_tick,username |

무엇을 바꿔야 할까요?

MariaDB에는 그것에 대한 구문이 없습니다.하나의 문장에서 (표에서 x를 제외하고 *를 선택)와 같은 작업을 수행할 수 없습니다.

그러나 몇 가지 단계를 거쳐 이를 수행할 수 있습니다.

SET @sql = 
    CONCAT('SELECT ',
            (SELECT 
                    GROUP_CONCAT(COLUMN_NAME)
                FROM
                    INFORMATION_SCHEMA.COLUMNS
                WHERE
                    TABLE_SCHEMA = '<schema>'
                    AND TABLE_NAME = '<table>'
                        AND COLUMN_NAME NOT IN ('<column>')),
            ' FROM <table>');
PREPARE s FROM @sql;
EXECUTE s;

언급URL : https://stackoverflow.com/questions/41710311/using-information-schema-columns-in-select-search

반응형