값과 다른 열을 동적 행 값을 선택하고 I는 구조 변경할 수 -MySQL의 (즉 활성 아직 사용), 컬럼 이름으로 I는 사용자 정보의 기존 테이블이
id name value
------------------------------
0 timezone Europe/London
0 language en
0 country 45
0 something x
1 timezone Europe/Paris
1 language fr
1 country 46
시간대/언어/등 국가 이름의 예는, 그들이 변수가 될 수/해당 열의 행에서 고유 이외의 유한 목록이 없습니다
나는 반환 MySQL의 호환 SQL 쿼리 필요 -
id timezone language country something
---------------------------------------------------
0 Europe/London en 45 x
1 Europe/Paris fr 46
나는 MySQL에 Pivot 테이블 기능을 해킹하는 것과 관련된 stackoverflow에 대한 다양한 해답을 살펴 봤지만 같은 테이블의 열의 고유 한 행 값에서 가변 열 이름 별칭을 사용하는 경우와 일치하는 것으로 보이지는 않습니다. 나는 거의 잠을 자지 못했지만 모두 약간의 흐림이되기 시작했습니다. 미리 사과하십시오.
내가 찾을 수있는 가장 가까운이, 이름 열에서 가능한 모든/고유 값을받을 것이다 준비된 문 https://stackoverflow.com/a/986088/830171를 사용하고 CASE WHEN
를 사용하는 쿼리를 작성하는 것입니다 및/또는 동일한 테이블 쿼리에 SELECT
또는 JOIN
하위 여러.
내가 생각할 수있는 대안은 해당 사용자 ID에 대한 모든 행을 가져 와서 for 루프에서 응용 프로그램 자체에서 처리하거나 한정된 양으로 이름을 제한하고 하위 사용 SELECT
s/JOIN
s. 그러나 두 번째 옵션은 새 이름이 추가 된 경우 이상하지 않습니다.이 쿼리를 다시 방문해야합니다.
말해 나는 디자인으로 이런 종류 의 동작을 선회에 대한 기본 지원을 (개발자가 아니라,이 프리젠 테이션에 더 적합의 느낌이없는 다른 RDBMS MySQL을 달리
'sql'으로 표현하기 위해 정말로 이것을 필요로합니까, 아니면 선택한 프로그래밍 언어로 충분한 후 처리를 할 수 있습니까? 빈틈없는 데이터에 대해 조인해야하는 경우 뷰/proc가 트릭 일 수 있습니다. – bluevector
예 지금 당장은 응용 프로그램 수준에서 혼란 스러울 것입니다. - 해당 사용자 ID에 대한 모든 행을 가져 와서 연관 배열에 데이터를 넣는 루프를 반복합니다. 난 그게 유일한 좋은 선택인지 확인하고 싶었어. 마이그레이션 및 일회성 보고서를위한 SQL 방법을 사용하는 것이 여전히 매우 편리합니다. – gingerCodeNinja