我想知道是否有可能(可能是更好的方法)按 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])
问题是第二个查询返回的结果与将 ID 放入 IN() 子句的顺序不同。
我发现的一种解决方案是将所有 ID 放入带有自动递增字段的临时表中,然后将其加入到第二个查询中。
有更好的选择吗?
注意:由于第一个查询是“由用户”运行的,而第二个查询是在后台进程中运行的,因此无法使用子查询将 2 合为 1 查询。
我正在使用 MySQL,但我认为让它注意其他数据库的选项可能会很有用。