我想知道如何在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`)
);
答案 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(或其他语言)实现。