小编Raf*_*off的帖子

我可以改进这个查询吗?

SELECT * 
FROM   SameLogTable
WHERE  ID_Table IN (SELECT ID_Table-1
                    FROM   SameLogTable
                    WHERE  <SameCondition>) OR
       ID_Table IN (SELECT ID_Table
                    FROM   SameLogTable
                    WHERE  <SameCondition>) OR
       ID_Table IN (SELECT ID_Table+1
                    FROM   SameLogTable
                    WHERE  <SameCondition>)
Run Code Online (Sandbox Code Playgroud)

此查询在日志记录表上运行,我想选择特定事件,以及这些事件之前和之后的事件。这个解决方案感觉丑陋且效率低下,为此编写更好的方法是什么?

示例:如果我对 LogTable 的 ID 为 4 和 23 的行感兴趣,我想得到以下结果:

ID    Column1    Column2    ...
3     ...        ...
4     ...        ...
5     ...        ...
22    ...        ...
23    ...        ...
24    ...        ...
Run Code Online (Sandbox Code Playgroud)

这些都是来自同一 LogTable 的所有行,除了我使用 WHERE 指定第 4 行和第 23 行,并且我希望 Select 自动返回第 3,5 行(第 4 行)和第 22、24 行(第 …

performance t-sql sql-server-2008-r2 query-performance

0
推荐指数
1
解决办法
103
查看次数