2012-12-12 3 views
1

여러 열이 포함 된 테이블이 있고 그 중 네 개는 일반 정수 값 (num1, num2, num3, num4)이고 데이터 소스는 임의의 순서로 이러한 값을 갖습니다. PHP에서는 행을 반입하고, 배열에 네 개의 int를 할당하고, 배열을 정렬하고, 정렬 된 값을 다시 지정하고 행을 저장합니다. 나는 SQL과 함께 이것을하고 싶다. 그래서, 내가 좋아하는 것Mysql - sql을 사용하여 열 값을 다시 배열하십시오.

id, num1, num2, num3, num4 
1 6  2 9  1 
2 12  3 8  4 

같은 테이블 ...와 결과는

id, num1, num2, num3, num4 
1  1  2  6  9 
2  3  4  8 12 

... 내가 생각할 수있는 모든 것을 봤

될 수 있습니다 MySQL의 심판 매뉴얼을 샅샅이 뒤졌지만 이렇게 할 수있는 방법을 찾을 수 없습니다. 어떤 생각을하거나 그냥 PHP 스크립트를 작성해야합니까?

답변

0

이 우물은 UNPIVOT, 정렬 및 피벗, 그러나 마지막 나는 그렇게 mysql을하지 들었다 어쩌면

Set @position = 0 
CREATE TEMPORARY TABLE OrderedUnpivot AS (
    Select Id,@position = @position + 1, @position % 4 as Position, Value From 
    (
    Select Id,Position,Value From 
    (
     select Id, 1 as Position, num1 as Value 
     Union 
     select Id, 2, num2 
     union 
     select Id, 3, num3 
     union 
     select Id, 4, num4 
    ) depivot 
    Order by Id, Value 
) 
Select ID,V1.Value as Num1, V2.Value as Num2, V3.Value as Num3, V4.Value as Num4 
From OrderedUnpivot v1 
Inner join OrderedUnpivot v2 ON v1.Id = v2.ID 
Inner join OrderedUnpivot v3 ON v1.Id = v3.ID 
Inner join OrderedUnpivot v4 ON v1.Id = v4.ID 

지저분하지만 음식 생각에, 오와 시험 또는 구문을 선택하지.

관련 문제