是否有(有效)方法通过Access SQL在特定记录的左侧和右侧获取5条记录?

尼古拉斯

就像标题说的那样,我尝试执行SELECT语句,在该语句中我选择1条特定记录(该人搜索的一条记录),但我还想获得5条记录(特定记录之前和之后的5条记录)到特定搜索记录的左右两边,同时将当前/重点记录保留在搜索记录上。

记录ID(它们在其中搜索)由日期值和数字组成。例如,在本月中,第一个创建的记录如下所示1602030001 <-- Year(16), month (02), day (03) and first record (0001)因此,他们将在本月创建的第二个1602030002以此类推。

因此,如果他们搜索记录16020050(二月的第50条记录),我想显示记录16020044至16020055。

我已经做了类似的事情,但是它有一个缺点:获取搜索记录(16020050),然后在VBA中将max和min变量(int)设置为搜索记录号的-5和+ 5。然后使用这些变量执行SELECT,例如:

SELECT * FROM SearchRecord WHERE ID > MinVariable (16020044) AND ID < MaxVariable (16020055)

但是,这样做的缺点是,例如,当2月只有500条记录,因此16020500然后开始进行(16030001),并且该人正在搜索2月的500条记录时,它还会搜索不存在的记录(到505,而3月份已经有5个-> 16030005)。

我不知道一种更有效/更智能的方式来将这5条额外记录移到每一边,并且还保持逻辑,即如果您在特定月份中搜索最后一条记录,则右边的5条记录将从下个月开始。

我希望这是有道理的;)

戈德·汤普森

对于名为[MyTable]的表

ID
--------
16020493
16020494
16020495
16020496
16020497
16020498
16020499
16020500
16030001
16030002
16030003
16030004
16030005
16030006
16030007

我们可以使用查询获取以ID = 16020500为中心的范围的起始ID

SELECT MIN(ID) AS StartID
FROM
    (
        SELECT TOP 6 ID 
        FROM MyTable
        WHERE ID <= 16020500
        ORDER BY ID DESC
    )

哪个返回

StartID
--------
16020495

并且我们可以简单地将该查询用作查询的WHERE子句中的子查询,以返回11行(前5行+主行+后5行):

SELECT TOP 11 *
FROM MyTable
WHERE 
    ID >= (
        SELECT MIN(ID) AS StartID
        FROM
            (
                SELECT TOP 6 ID 
                FROM MyTable
                WHERE ID <= 16020500
                ORDER BY ID DESC
            )
    )
ORDER BY ID

返回

ID
--------
16020495
16020496
16020497
16020498
16020499
16020500
16030001
16030002
16030003
16030004
16030005

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何找到有效记录的方法

来自分类Dev

根据特定列排序后如何获取除前5条记录以外的所有记录

来自分类Dev

检查postgres中是否有多个记录的行的有效方法

来自分类Dev

SQL:有效地获取最后一条记录

来自分类Dev

从数据库获取最新记录的有效方法

来自分类Dev

报告记录验证警告和错误的有效方法?

来自分类Dev

Rails:检查数据库中是否已存在新记录的最有效方法

来自分类Dev

Oracle SQL从有序数据集中获取第一条记录和最后一条记录

来自分类Dev

在haskell中是否有一种方法可以通过多个参数和不同的顺序进行紧凑有效的比较

来自分类Dev

是否有任何有效且通用的方法来获取随机数的余数?

来自分类Dev

通过键||调用特定方法的最有效方法 重构方法调用switch语句

来自分类Dev

观察SQL表是否有新插入的有效方法

来自分类Dev

SQL是否有比基于不同条件的CASE结果更有效的方法

来自分类Dev

此SQL查询是否有更有效的替代方法?

来自分类Dev

获取索引值的有效方法

来自分类Dev

RxJava和FasterXML是否有有效的Proguard规则?

来自分类Dev

从日期(事件的用户日志)排序的多个表中获取最后n条记录的有效方法

来自分类Dev

是否有一种有效的方法来添加大量记录,而EF&SQL Server中不存在每个记录?

来自分类Dev

当A和B没有共同的祖先时,通过dynamic_cast从A *转换为B *是否有效?

来自分类Dev

为特定设备通过IP循环的更有效方法

来自分类Dev

在MySQL中通过复杂表达式获取N行顺序的有效方法

来自分类Dev

拉力赛-通过ID获取物品的更有效方法

来自分类Dev

是否存在通过引用进行元素选择和通过指针操作进行元素选择都有效的情况?

来自分类Dev

C#错误“特定的强制转换无效。” 即使通过检查objectToCast是否为ExpectedType验证它是否有效

来自分类Dev

从表中选择部分或全部记录的有效方法

来自分类Dev

计算后代记录数的有效方法

来自分类Dev

循环浏览日志记录的最有效方法

来自分类Dev

通过分类数据值进行计数和打印以达到卓越的有效方法

来自分类Dev

通过分类数据值进行计数和打印以达到卓越的有效方法

Related 相关文章

  1. 1

    如何找到有效记录的方法

  2. 2

    根据特定列排序后如何获取除前5条记录以外的所有记录

  3. 3

    检查postgres中是否有多个记录的行的有效方法

  4. 4

    SQL:有效地获取最后一条记录

  5. 5

    从数据库获取最新记录的有效方法

  6. 6

    报告记录验证警告和错误的有效方法?

  7. 7

    Rails:检查数据库中是否已存在新记录的最有效方法

  8. 8

    Oracle SQL从有序数据集中获取第一条记录和最后一条记录

  9. 9

    在haskell中是否有一种方法可以通过多个参数和不同的顺序进行紧凑有效的比较

  10. 10

    是否有任何有效且通用的方法来获取随机数的余数?

  11. 11

    通过键||调用特定方法的最有效方法 重构方法调用switch语句

  12. 12

    观察SQL表是否有新插入的有效方法

  13. 13

    SQL是否有比基于不同条件的CASE结果更有效的方法

  14. 14

    此SQL查询是否有更有效的替代方法?

  15. 15

    获取索引值的有效方法

  16. 16

    RxJava和FasterXML是否有有效的Proguard规则?

  17. 17

    从日期(事件的用户日志)排序的多个表中获取最后n条记录的有效方法

  18. 18

    是否有一种有效的方法来添加大量记录,而EF&SQL Server中不存在每个记录?

  19. 19

    当A和B没有共同的祖先时,通过dynamic_cast从A *转换为B *是否有效?

  20. 20

    为特定设备通过IP循环的更有效方法

  21. 21

    在MySQL中通过复杂表达式获取N行顺序的有效方法

  22. 22

    拉力赛-通过ID获取物品的更有效方法

  23. 23

    是否存在通过引用进行元素选择和通过指针操作进行元素选择都有效的情况?

  24. 24

    C#错误“特定的强制转换无效。” 即使通过检查objectToCast是否为ExpectedType验证它是否有效

  25. 25

    从表中选择部分或全部记录的有效方法

  26. 26

    计算后代记录数的有效方法

  27. 27

    循环浏览日志记录的最有效方法

  28. 28

    通过分类数据值进行计数和打印以达到卓越的有效方法

  29. 29

    通过分类数据值进行计数和打印以达到卓越的有效方法

热门标签

归档