为了账号安全,请及时绑定邮箱和手机立即绑定

按SQLIN()子句中值的顺序排序

按SQLIN()子句中值的顺序排序

互换的青春 2019-06-23 17:07:11
按SQLIN()子句中值的顺序排序我想知道是否有其他(可能是更好的方法)按照IN()子句中的值的顺序进行排序。问题是,我有两个查询,一个查询获取所有ID,另一个查询检索所有信息。第一个创建ID的顺序,我希望第二个ID按顺序排序。ID以正确的顺序放在IN()子句中。所以它应该是(非常简化的):SELECT id FROM table1 WHERE ... ORDER BY display_order, nameSELECT name, description, ... WHERE id IN ([id's from first])问题是,第二个查询没有按照ID被放入IN()子句的顺序返回结果。我找到的一个解决方案是将所有ID放入一个具有自动递增字段的临时表中,然后将该字段加入到第二个查询中。还有更好的选择吗?注:由于第一个查询是“由用户”运行的,而第二个查询是在后台进程中运行的,因此无法使用子查询将2合并为1个查询。我正在使用MySQL,但我认为让它注意到其他DB也有哪些选项可能是有用的。
查看完整描述

3 回答

?
海绵宝宝撒

TA贡献1809条经验 获得超8个赞

请参见如何获取排序数据。

SELECT ...
  FROM ...
 WHERE zip IN (91709,92886,92807,...,91356)
   AND user.status=1ORDER 
    BY provider.package_id DESC 
     , FIELD(zip,91709,92886,92807,...,91356)LIMIT 10


查看完整回答
反对 回复 2019-06-23
?
缥缈止盈

TA贡献2041条经验 获得超4个赞

出现在人们脑海中的解决方案有两种:

  1. order by case id when 123 then 1 when 456 then 2 else null end asc

  2. order by instr(','||id||',',',123,456,') asc

(instr()来自甲骨文,也许你有locate()charindex()或诸如此类的东西)


查看完整回答
反对 回复 2019-06-23
  • 3 回答
  • 0 关注
  • 1374 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信