按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
缥缈止盈
TA贡献2041条经验 获得超4个赞
order by case id when 123 then 1 when 456 then 2 else null end asc
order by instr(','||id||',',',123,456,') asc
(instr()
locate()
charindex()
添加回答
举报
0/150
提交
取消