[SQL] MySQL의 동적 열 이름을 선택하는 방법
SQLMySQL의 동적 열 이름을 선택하는 방법
나는 열 이름을 선택합니다 그러나 나는 시간의 테이블 구조 앞서 몰라하고 열 이름을 가진 그래서 내가 할 수있는 단지 하드 코드 select 문을 변경할 수 있습니다. 나는 또한 모든 열을 선택하고 싶지 않아요. 이 작업을 수행하는 쉬운 방법은 거기 있습니까?
내 생각은이 두 쿼리의 조합의 일종이다하지만 내 SQL가 좋지 않다 있습니다.
SHOW COLUMNS FROM table_name;
SELECT * FROM table_name;
나는 서브를 선택하여 시도했지만 작동하지 않았다. 아무것도 일어날 것 같다, 난 그냥 아무 결과를 얻을 수없는 오류가 발생하지 않습니다
SELECT (SELECT column_name
FROM information_schema.columns
WHERE table_name ='table_name')
FROM table_name;
어쩌면 내가 가입 할 필요가? .. 어쨌든 어떤 도움도 큰 감사 것
해결법
-
==============================
1.이 SQLFiddle을보십시오 :
이 SQLFiddle을보십시오 :
CREATE TABLE atable ( prefix1 VARCHAR(10) ,prefix2 VARCHAR(10) ,notprefix3 INT ,notprefix4 INT ); INSERT INTO atable VALUES ('qwer qwer', 'qwerqwer', 1, 1); INSERT INTO atable VALUES ('qwer qwer', 'asdfaasd', 1, 1); INSERT INTO atable VALUES ('qwer qwer', 'qrt vbb', 1, 1); INSERT INTO atable VALUES ('qwer qwer', 'sdfg sdg', 1, 1); SELECT CONCAT('SELECT ', GROUP_CONCAT(c.COLUMN_NAME), ' FROM atable;') INTO @query FROM INFORMATION_SCHEMA.COLUMNS c WHERE c.TABLE_NAME = 'atable' AND c.COLUMN_NAME LIKE 'prefix%' ORDER BY c.ORDINAL_POSITION; PREPARE stmt FROM @query; EXECUTE stmt;
일부 문제 :
당신은 가능성이 결과 집합에 ORDER BY의 어떤 종류를 원할 것입니다.
당신이 조인과 사물의 측면에서 할 수있는 일에는 한계가있다.
이 테스트에서 놓칠 수 가능성이 어디에 당신은 런타임 유효성 검사를 이동합니다.
당신은 쉽게 스키마 변경을 처리 할 수 바라고있다. 이 기술은 당신이 예상 할 수있는 특정 유형의 스키마 변경을 처리합니다, 당신은 아마있을 것이다 다른 사람은 어쨌든이 코드를 변경할 수 있습니다.
from https://stackoverflow.com/questions/15507683/how-to-select-column-names-dynamically-in-mysql by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 결과 세트의 값을 반복하는 방송 블랭크 (0) | 2020.05.17 |
---|---|
[SQL] 오라클 10 로컬 임시 테이블 (저장 프로 시저의 범위에 대한) (0) | 2020.05.17 |
[SQL] 날짜 시간에 대한 SSIS 소스 형식 암시 적 변환 (0) | 2020.05.17 |
[SQL] 업데이트 트리거 후 ORACLE : ORA-04091 테이블 오류를 돌연변이 해결 (0) | 2020.05.17 |
[SQL] 어떻게 BigQuery에 / SQL에서 데이터 다량의 열과 행을 바꾸어 하는가? (0) | 2020.05.17 |