如何在使用MySQL排序时排除一些值?

Pra*_*ngh 7 mysql sql-order-by

我有这样一张桌子:

id products_name sort
1   abc           0 
2   xyz           1
3   pqr           2
4   qwe           0
Run Code Online (Sandbox Code Playgroud)

我想通过sort列和升序对记录进行排序,但我不希望结果集中顶部的行为0.
0中的sort行应位于结果集的底部,其余行应使用sort列按升序排序.

我该怎么做呢?

Rom*_*ain 11

你可以尝试类似的东西:

ORDER BY IF(SORT=0, 999999999, SORT)
Run Code Online (Sandbox Code Playgroud)


MC *_*ror 6

您可以使用以下ORDER BY IF声明:

SELECT *
FROM table
ORDER BY IF(SORT = 0, 999999999, SORT)
Run Code Online (Sandbox Code Playgroud)

或者您可以使用该UNION ALL语句来实现此目的:

(SELECT * FROM table WHERE sort > 0 ORDER BY sort)
UNION ALL
(SELECT * FROM table WHERE sort = 0)
Run Code Online (Sandbox Code Playgroud)