我想知道是否存在(可能更好的方式)按IN()子句中的值的顺序排序.
问题是我有2个查询,一个获取所有ID,第二个查询所有信息.第一个创建我想要第二个订购的ID的顺序.ID以正确的顺序放入IN()子句中.
所以它就像(非常简化):
SELECT id FROM table1 WHERE ... ORDER BY display_order, name
SELECT name, description, ... WHERE id IN ([id's from first])
Run Code Online (Sandbox Code Playgroud)
问题是第二个查询不会按照将ID放入IN()子句的顺序返回结果.
我发现的一个解决方案是将所有ID放入具有自动递增字段的临时表中,然后将该字段连接到第二个查询中.
有更好的选择吗?
注意:由于第一个查询是"由用户"运行而第二个查询是在后台进程中运行,因此无法使用子查询将2到1的查询组合在一起.
我正在使用MySQL,但我认为让它注意到其他数据库的选项可能也很有用.