我有一个包含多个列的表,其中四个只是通用整数值(num1,num2,num3,num4),并且数据源具有随机顺序的这些值。在php中,我将获取行,将四个int分配给一个数组,对数组进行排序,返回已排序的值并保存该行。我想用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
...
我已经用Google搜索了我能想到的一切,并搜索了Mysql参考手册,但似乎找不到办法来做到这一点。有什么想法或我应该写一个PHP脚本吗?
答案 0 :(得分:0)
那是一个univot,一种排序和一个支点,但最后我听说不是在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
凌乱,但值得深思,哦,未经测试甚至语法检查。