sql 中关键字 in 的排序问题

clipboard.png

为何查询的记录是倒过来的.

如何让查询记录按id('296727','296567','296507','296287')的顺序来排呢?

不用order by id desc; 这种.

求指教

补充:不用升序或者降序 就按id的顺序来排列.
譬如在296567后面加一个300000. 变成('296727','296567','300000','296507','296287');

查询记录 300000 是排在第三条记录..

阅读 5k
8 个回答

加上ORDER BY find_in_set(id,'296727,296567,296507,296287'));

不能, in 是过滤,跟排序无关。

排序总是要用order by的

in 是查询关键词,不是排序关键词,需要用 find 或者 find_in_set 两个关键词根据自定义 id 排序,参见文章: http://river0314.lofter.com/p...

sql语句指定排序只能用order by

如果按照你说的不按照id大小的顺序,只能自己建一个表,每个id设置一个排序号,然后在sql语句中关联这张表,按照排序号进行排序:如:

select t1.*
from t_order t1 inner join t_sort t2 on t1.id = t2.id
order by t2.sort_id
新手上路,请多包涵
where id in (296727,296567,296507,296287) order by field(id, 296727,296567,296507,296287)

你的id 是主键,默认排序是主键asc,in里面随便写,跟排序没半毛钱关系

你没有指定排序规则,mysql的查询优化器会自动设置一个排序规则。这个排序规则和你的in里面的顺序无关

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题