我想知道是否有更好的方法可以按 IN ()子句中值的顺序排序。
问题是我有两个查询,一个获取所有 ID,另一个检索所有信息。第一个创建 ID 的顺序,我希望第二个按照这个顺序排序。ID 以正确的顺序放在 IN ()子句中。
所以它应该是这样的(非常简单) :
SELECT id FROM table1 WHERE ... ORDER BY display_order, name
SELECT name, description, ... WHERE id IN ([id's from first])
问题在于,第二个查询不会按照 ID 放入 IN ()子句的顺序返回结果。
我发现的一个解决方案是将所有 ID 放入一个带有自动递增字段的临时表中,然后将该字段加入到第二个查询中。
还有更好的选择吗?
注意: 由于第一个查询是“由用户”运行的,而第二个查询是在后台进程中运行的,因此无法使用子查询将2合并为1查询。
我正在使用 MySQL,但是我认为记录下其他 DBs 的选项可能会很有用。