PN1
, PN2
, PN3
, otherData
과 같은 여러 개의 부품 번호 열이있는 테이블이 있습니다.MySQL에서 테이블의 여러 필드를 하나의 열로 바꿔보기
부품 번호를 otherData에 연결하는 PN
이라는 열로 부품 번호 열을 접을 수있는 효율적인 MySQL 쿼리를 만들고 싶습니다.
이 변환은 비즈니스 로직에 필수적입니다. 그 아래의 쿼리가 올바르게 작동하지만 성능을 대폭 향상시켜야합니다.
다음을 수행하는 더 좋은 방법이 있습니까? 올바르게 데이터를 변환하지만, 비효율적이다
SQL 쿼리 :
입력 테이블은 다음 표와 같다SELECT 'Pn', 'Mfg', 'TableId', 'SourceColumn', 'OtherData'
SELECT PN1, Mfg, '26', 'PN1', OtherData FROM Table
UNION ALL
SELECT PN2, Mfg, '26', 'PN2', OtherData FROM Table
UNION ALL
SELECT PN3, Mfg, '26', 'PN3', OtherData FROM Table
UNION ALL
SELECT PN4, Mfg, '26', 'PN4', OtherData
INTO OUTFILE 'XXX.dat'
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '"'
ESCAPED BY '\\'
LINES TERMINATED BY '\n'
FROM Table d;
: 나는 다음과 같이 할 수있는 출력 .dat
파일을 원하는
| PN1 | PN2 | PN3 | PN4 | MFG | TableId | OtherData |
-----------------------------------------------------------------------
| asdf | abde | 12354 | asdfc | 2 | 26 | 0.2456 |
| nupo | 1354 | null | null | 2 | 26 | 1.53 |
| ... | ... | ... | ... | ... | ... | ... |
| ... | ... | ... | ... | ... | ... | ... |
| ... | ... | ... | ... | ... | ... | ... |
:
"Pn", "Mfg", "TableId", "SourceColumn","OtherData"
"asdf", 2, 26, "PN1", 0.2456
"abde", 2, 26, "PN2", 0.2456
"12354", 2, 26, "PN3", 0.2456
"asdfc", 2, 26, "PN4", 0.2456
"nupo", 2, 26, "PN1", 1.53
"1354", 2, 26, "PN2", 1.53
...
PN1에서 PN4가 PN에.
MySQL에서 이러한 종류의 변환을 더 빨리 수행 할 수 있습니까? 내가 건너
동적 쿼리를 만드는 저장 프로 시저를 사용하면됩니다. 나는 이것을 쓰는 방법을 모르겠다. – Barmar
"group_concat in reverse"는 무엇을 의미합니까? 예제 입력 및 출력 데이터를 보여 주며 의미심장을 보여줍니다. 또한, 우리가하는 일은 여전히 수수께끼입니다. (귀하의 질문은 문제에 대한 해결책 인 것처럼 보이지만 더 좋은 방법이있을 수 있습니다.) – Bohemian
질문을 수정하여 (잘하면) 명확하게 – StormeHawke