我想知道是否存在按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,但我想让它指出其他数据库也有哪些选项可能会很有用。
IN
和FIELD
参数相等。通过使用这些附加知识,可以更快地在程序代码中执行此操作。当然,如果您考虑服务器性能,那么将这种负担放在客户端而不是服务器上会更明智。