【发布时间】:2013-02-25 17:00:33
【问题描述】:
我正在运行一个相当长的 SQL 查询,其核心是非常基本的:
SELECT * FROM documents WHERE doc_id IN (995,941,940,954,953,973)
我的这个查询的目标结果是按照它们在 IN 子句中设置的顺序显示文档。但是,我还没有找到一个干净的解决方案。
我想我可以使用 charindex() 来处理这个问题。
ORDER BY charindex('995,941,940,954,953,973',doc_id)
ORDER BY 的结果只是按照默认的 ASC 顺序对 doc_ids 进行排序。
关于如何具体定义此查询的结果顺序的任何指导?
【问题讨论】:
-
我想到了几种方法,也许有人甚至想编写一个示例,但这很痛苦。无论如何,您可以使用临时表为 IN 子句中的值创建顺序,并使用 social.msdn.microsoft.com/forums/en-US/transactsql/thread/… 将它们解析到临时表中。另一种方法是使用游标并逐行返回。临时表可能更快。
标签: sql asp-classic sql-order-by