我有以下查询

SELECT id, fName, orderNum FROM tTable ORDER BY FIELD(orderNum, 1,2,0)


我想对orderNum字段进行排序并按顺序显示记录,例如orderNum字段1,2,3中的值应排在第一位,其余0值行必须排在后面。

有什么解决办法吗?我正在Zend Framework中实现此功能,因此请尽可能在

->order(????) format


任何帮助将由衷的感谢。我在google中到处搜索,但没有解决它:(

最佳答案

我不是SQL专家,所以也许您可以做得更好,但是对您来说可能就足够了:

SELECT id, fName, orderNum
FROM tTable
ORDER BY IF(orderNum > 0, orderNum, (select max(orderNum) from tTable)+1) ASC


或(肮脏但速度更快):

SELECT id, fName, orderNum
FROM tTable
ORDER BY
  CASE orderNum
    WHEN 0 THEN orderNum+2147483646
    ELSE orderNum
  END

09-25 22:12