在mysql中对单行中的值进行排序

时间:2013-10-24 06:49:15

标签: mysql sql database

我想知道如何在MySQL的单行中对值进行排序。

例如,如果我有一个像ID,身高,体重,等级,分数和样本值的行是:1,162,52,2,42。

我们可以编写查询并将其排序为1,2,42,52,162吗?

ID,身高,体重,等级,分数仅为字段名称。我觉得这是不可能的,但如果有解决办法,请告诉我。

//结构

CREATE TABLE `properties` (
  `id` INT NULL AUTO_INCREMENT DEFAULT NULL,
  `Weight` INT NULL AUTO_INCREMENT DEFAULT NULL,
  `Height` INT NULL DEFAULT NULL,
  `Rank` INT NULL DEFAULT NULL,
  `Score` INT NULL DEFAULT NULL,
  PRIMARY KEY (`id`)
);

1 个答案:

答案 0 :(得分:0)

试试这个

SELECT   if (
        height <
           if (
              Weight <
                 if (Score < if (ID < RANK, ID, RANK),
                     Score,
                     if (ID < RANK, ID, RANK)),
              weight,
              if (Score < if (ID < RANK, ID, RANK),
                  Score,
                  if (ID < RANK, ID, RANK))
           ),
        height,
        if (
           Weight <
              if (Score < if (ID < RANK, ID, RANK),
                  Score,
                  if (ID < RANK, ID, RANK)),
           weight,
           if (Score < if (ID < RANK, ID, RANK),
               Score,
               if (ID < RANK, ID, RANK))
        )
     ),
     if (
        height >
           if (
              Weight >
                 if (Score > if (ID > RANK, ID, RANK),
                     Score,
                     if (ID > RANK, ID, RANK)),
              weight,
              if (Score > if (ID > RANK, ID, RANK),
                  Score,
                  if (ID > RANK, ID, RANK))
           ),
        height,
        if (
           Weight >
              if (Score > if (ID > RANK, ID, RANK),
                  Score,
                  if (ID > RANK, ID, RANK)),
           weight,
           if (Score > if (ID > RANK, ID, RANK),
               Score,
               if (ID > RANK, ID, RANK))
        )
     )
  FROM   properties;

它只会给你第一个(最小值)和最后一个(最大值)。同样,你可以实现中间价值,这显然是一项笨拙的工作。无论如何我不知道它是否可以轻松地用PHP(或其他语言)实现。