目前,我在声明中正在执行一个非常基本的OrderBy。
SELECT * FROM tablename WHERE visible=1 ORDER BY position ASC, id DESC 问题是“位置”的NULL条目被视为0。因此,所有位置为NULL的条目都出现在具有1,2,3,4的条目之前。例如:
NULL, NULL, NULL, 1, 2, 3, 4 有没有一种方法可以实现以下排序:
1, 2, 3, 4, NULL, NULL, NULL.
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
MySQL具有未记录的语法,可以最后对null进行排序。在列名之前放置减号(-),然后将ASC切换为DESC:
SELECT * FROM tablename WHERE visible=1 ORDER BY -position DESC, id DESC 从本质上讲,这与position DESC将NULL值最后放置相反,但与相同position ASC。
一个很好的参考在这里http://troels.arvin.dk/db/rdbms#select-order_by来源:stack overflow