我正在从具有整数id值的大表(数百万行)中选择一组帐户记录.从某种意义上说,作为一个人获得的查询的基础.我正在做什么构建一个大的逗号分隔列表,并将其作为"in"子句传递给查询.现在结果是完全无序的.我想要做的是按照"in"子句中的值的顺序返回结果.
我假设我将不得不构建一个临时表并进行连接,我想避免,但可能无法做到.
思考?现在查询的大小限制在每个约60k,因为我们试图限制输出大小,但它可能是任意大的,这可能排除了从实际角度来看的"in"查询,如果不是物理的.
提前致谢.
Dal*_*dal 48
实际上,这更好:
SELECT * FROM your_table
WHERE id IN (5,2,6,8,12,1)
ORDER BY FIELD(id,5,2,6,8,12,1);
继承人FIELD文件:
http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_field
有点套路....
SELECT * FROM your_table
WHERE id IN (5,2,6,8,12,1)
ORDER BY FIND_IN_SET(id,'5,2,6,8,12,1') DESC;
请注意, find_in_set 中的 ID 列表是一个字符串,因此它被引用。另请注意,如果没有 DESC,它们的结果将按与列表指定的相反顺序返回。
| 归档时间: | 
 | 
| 查看次数: | 17443 次 | 
| 最近记录: |