PHP与MySQL实现:将指定ID的行置于首位并显示所有表数据
解答:如何将指定ID的行置于查询结果首位
嘿,作为刚入门PHP和MySQL的新手,你的这个思路其实非常靠谱!不过有个小细节需要调整下,才能让指定ID的行真正排在结果的最前面。
先来说说你写的SELECT * FROM users ORDER BY id='some value'为什么达不到预期——在MySQL里,条件表达式id='some value'会返回布尔值:匹配的行返回1,不匹配的返回0。而ORDER BY默认是**升序(ASC)**排序,所以0会排在1前面,结果反而会把不匹配的行放在前面,目标行被挤到后面去了。
要让目标行置顶,只需要给排序条件加上DESC(降序),让1排在0前面就行。另外,为了让其他行有一个明确的排序规则(避免结果顺序混乱),可以再加一个次要排序条件,比如按id升序排列:
SELECT * FROM users ORDER BY id='some value' DESC, id ASC;
举个实际例子,如果你想把id为5的行放在最前面,同时其他行按id从小到大排列,语句就是:
SELECT * FROM users ORDER BY id=5 DESC, id;
补充个小提示:如果你的id字段是数值类型(比如INT),那写条件的时候可以不用引号,直接写id=5就好,更符合数值类型的规范。
内容的提问来源于stack exchange,提问作者Nadir Abbas
相关产品推荐
相关产品推荐

