-1

我想知道如何在 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`)
);
4

1 回答 1

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(或其他语言)实现。

于 2013-10-24T07:24:01.003 回答