MySQL 基于列值的查询

MySQL query based on column value

我正在尝试根据不同列中的值对一行进行排序,老实说,我不知道如何正确解释这一点,所以我将展示一个示例。

我正在尝试创建一个查询,该查询根据值对失败进行排序,例如 SELECT * from table WHERE id='1' order by Failure1 asc,Failure2 asc,Failure3 asc

我希望查询将其显示为结果。

ID    Failure2 Failure3 Failure1
1     5636       123     22

示例table

ID    Failure1 Failure2 Failure3
1     22       5636     123
2     33       148      22
3     1        101      11
4     33       959      55

这有点困难,因为您正在做的是动态地重新排序您的列。我能想到的唯一方法是将每一列作为 CASE 语句。虽然它不会很漂亮或高效:

SELECT
  CASE
     WHEN (Failure1 > Failure2 AND Failure1 > Failure3) THEN Failure1
     WHEN (Failure2 > Failure1 AND Failure2 > Failure3) THEN Failure2
     WHEN (Failure3 > Failure1 AND Failure3 > Failure2) THEN Failure3
  END,
  --repeat Case for second and third column
FROM
   Failures
WHERE
   ID = 1

此外,仔细检查您是否可以在 WHEN() 中执行 AND 逻辑。 90% 确定你可以,但最坏的情况是,你需要扩展 WHEN。

此外,@MatBailie 是对的;这通常是在表示层上完成的,而不是通过 SQL 查询。 SQL 在这种逻辑上并不是最好的,而表示层是为它构建的。