我有以下查询
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