只是要求非常相似这一个问题...MySQL的排序依据一个数字,空字符串(或0)最后
目前,我在我的发言做一个非常基本的排序依据。
SELECT * FROM tablename WHERE visible=1 ORDER BY position ASC, id DESC
这样做的问题是,对于“位置”空字符串条目为0作为空字符串那些具有1,2,3,4之前出现处理因此所有条目与位置。例如:
'', '', '',1,2,3,4
或
0,0,0,1,2,3,4
是否有一种实现以下顺序的方法:
1,2,3,4,'','',''。
或
1,2,3,4,0,0,0
我假定溶液可具有某种替换功能的,但我没有能找到一个函数,它通过谷歌来做我所追求的。
非常感谢,
JonB
我认为这会起作用,但它不是最好的解决方案。我认为'position'应该是一个整数列,如果是这种情况,'CASE'表达式也应该使用整数,而不是字符串。如果“位置”不是一个整数或至少是数字,那么按数字排序不会起作用。此外,此解决方案还添加了一个新列以进行排序,这可能会对性能产生负面影响。如果我假设'position'实际上是一个整数是正确的,那么OP可能意味着'NULL'值在他写'空字符串'的地方,这意味着你可以简单地写'ORDER BY COALESCE(position,〜0),id DESC' – 2010-01-12 21:14:17
@Roland:OP很清楚地表明这个位置是一个字符串:*“与此相关的问题是'位置'的空字符串条目被视为0。”* – RedFilter 2010-03-10 13:38:31
OrbMan是的,他做到了。我说这可能是问题的一部分。我的建议是先给它一个适当的数据类型,而不是之后尝试扫描。 – 2010-03-10 16:10:37