首先是特别的身份

时间:2012-09-18 11:26:44

标签: mysql sql sql-order-by

实际上我有一张车牌表CAR它有3个字段:

  • carId
  • carName
  • carPrice

Car table有15条记录,我只想在任何订单的第一个剩余记录中获得第5条记录为DESCASC

我的主要目标是让特定carId首先将所有其他记录逐个DESCASC

我想我很清楚。

2 个答案:

答案 0 :(得分:3)

您可以在CASE子句中使用ORDER BY表达式,如下所示:

SELECT carId ,carName,carPrice
FROM Car 
ORDER BY CASE WHEN carId = @th5thid THEN 0 ELSE 1 END, Carid

答案 1 :(得分:2)

尽管@Mahmoud回答非常有效,但case中的order by可能会使引擎难以优化查询。你可以这样避免它:

select carid, carname, carprice
from car 
order by carid != 5, carid

在mysql中,比较将返回0或1,因此无需将其包装在case语句中:

mysql> select 1 = 0;
+-------+
| 1 = 0 |
+-------+
|     0 |
+-------+

mysql> select 1 = 1;
+-------+
| 1 = 1 |
+-------+
|     1 |
+-------+