如何执行 SQLITE 搜索来返回最大数量的记录,并且还具有 WHERE 子句?

问题描述 投票:0回答:1

我有一个方法可以从数据库中以“numRecords”块(例如 100)返回项目 它的工作原理是记录偏移量,以便根据先前返回的项目开始搜索,假设所有记录都将被返回。所有这些都封装在一个名为“Walker”的类中

现在我想在搜索中添加一个 WHERE 子句,因此该算法将不起作用,因为并非所有记录都会返回

   class Walker:
        current_offset  = 0;

        def getNextRecords(cls, numRecords):
           cursor = cls.database.cursor()

           cmd=("SELECT *"
                + " FROM "
                + DB_TABLE
                + " LIMIT " + str(numRecords)
                + " OFFSET " + str(cls.current_offset)
                )
           cursor.execute(cmd)
           items = cursor.fetchall()
           cursor.close()

        cls.current_offset += len(items)

        return items

如何在遵守 WHERE 子句的同时从数据库返回连续的“numRecords”记录集?

python sqlite
1个回答
0
投票

添加带有

SELECT
子句的外部
WHERE
,以仅获取每个“块”中符合条件的记录:

SELECT * FROM (
    SELECT ... LIMIT(m) OFFSET(n)
    )
    WHERE foo = 'bar'
© www.soinside.com 2019 - 2024. All rights reserved.