实际上我有一张车牌表CAR
它有3个字段:
carId
。carName
。carPrice
。 Car table有15条记录,我只想在任何订单的第一个剩余记录中获得第5条记录为DESC
,ASC
。
我的主要目标是让特定carId
首先将所有其他记录逐个DESC
或ASC
!
我想我很清楚。
答案 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 |
+-------+