MySQL查询基于列值

时间:2015-04-08 15:13:05

标签: mysql sql

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

我正在尝试创建一个查询,根据例如SELECT * from table WHERE id='1' order by Failure1 asc,Failure2 asc,Failure3 asc

的值对失败进行排序

我希望查询显示结果。

ID    Failure2 Failure3 Failure1
1     5636       123     22

示例表

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

1 个答案:

答案 0 :(得分:1)

这有点难,因为您正在做的是动态地重新排序列。我能想到的唯一方法是将每列作为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%肯定你可以,但最坏的情况是,你需要扩展你的时间。

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