sql - 在 SQL Select 中维护 WHERE 顺序

标签 sql where

在对特定记录进行 SELECT 时,是否可以保持 WHERE 子句的顺序?

例如,给定以下 SELECT 语句:

SELECT [RecSeq] FROM [MyData] WHERE
[RecSeq]=3 OR [RecSeq]=2 OR [RecSeq]=1 OR [RecSeq]=21 OR [RecSeq]=20 OR 
[RecSeq]=19 OR [RecSeq]=110 OR [RecSeq]=109 OR [RecSeq]=108 OR 
[RecSeq]=53 OR [RecSeq]=52 OR [RecSeq]=51;

我希望结果返回为:

3
2
1
21
20
19
110
109
108
53
53
51

但是,我返回的内容并没有按任何特定顺序排列。目前我有一个循环,它为每个需要的记录调用 SELECT 语句。这可能在 1 到 700,000 次之间的任何地方。不用说性能不是最好的。

有任何解决方案还是我陷入了循环?

最佳答案

您需要 ORDER BY FIELD 子句。

SELECT RecSeq From MyData WHERE RecSeq IN (3, 2, 1, 21, 20, 19, 110, 109, 108, 53, 52, 51)
ORDER BY FIELD (RecSeq, 3, 2, 1, 21, 20, 19, 110, 109, 108, 53, 52, 51);

你没有说你使用的是什么数据库系统 - 我知道这在 MySQL 中有效。

关于sql - 在 SQL Select 中维护 WHERE 顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1167858/

相关文章:

sql - 如何使用 SQL 在不同系统之间匹配人员?

php - 带条件的 SQL 语句

带有 "where Self"子句的 Swift 协议(protocol)

Sqlite 连接表并选择列包含的位置

nested - Fortran 嵌套 WHERE 语句

arrays - 仅按第一个位置创建蒙版

sql - 如何将sql查询结果存储在变量和messegeBox中

php - 数据库更新问题,无法更新

sql - 选项重新编译使查询速度更快 - 好还是坏?

select - 是否可以在 select 语句 Cassandra 中的 where 子句之后传递任何其他列