1

我有一个包含几列的表,其中四个只是通用整数值(num1、num2、num3、num4),数据源具有随机顺序的这些值。在 php 中,我将获取行,将四个整数分配给一个数组,对数组进行排序,将排序后的值分配回去并保存该行。我想用 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 脚本?

4

1 回答 1

0

好吧,这是一个非枢轴,一个排序和一个枢轴,但最后我听说不是在 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

凌乱但值得深思,哦,没有经过测试,甚至没有检查语法。

于 2012-12-12T01:00:28.877 回答