分页查询 sql,每次查询数量 5000且小于 32000,做循环处理
时间: 2023-08-22 14:03:29 浏览: 57
可以使用以下 SQL 语句进行分页查询,每次查询 5000 条记录:
```
SELECT * FROM table_name LIMIT 5000 OFFSET 0;
SELECT * FROM table_name LIMIT 5000 OFFSET 5000;
SELECT * FROM table_name LIMIT 5000 OFFSET 10000;
...
```
其中,OFFSET 的值需要根据当前查询的页数和每页显示的记录数计算得出。
如果每次查询的记录数不足 5000 条,可以在最后一次查询时修改 LIMIT 子句的值,如:
```
SELECT * FROM table_name LIMIT 20000 OFFSET 0;
```
这个语句将查询前 20000 条记录。
在代码中可以使用循环来实现分页查询。比如使用 Python 的 pymysql 库,可以写出如下的代码:
```
import pymysql
# 连接数据库
conn = pymysql.connect(host='localhost', user='root', password='123456', database='db_name')
# 创建游标
cur = conn.cursor()
# 每页显示的记录数
page_size = 5000
# 查询总记录数
cur.execute('SELECT COUNT(*) FROM table_name')
total_records = cur.fetchone()[0]
# 计算总页数
total_pages = (total_records + page_size - 1) // page_size
# 分页查询
for page in range(total_pages):
offset = page * page_size
limit = page_size if page < total_pages - 1 else total_records - page * page_size
cur.execute(f'SELECT * FROM table_name LIMIT {limit} OFFSET {offset}')
results = cur.fetchall()
# 处理查询结果
for row in results:
# 处理每一行记录
pass
# 关闭游标和连接
cur.close()
conn.close()
```
以上代码做了如下操作:
1. 连接数据库;
2. 计算总记录数和总页数;
3. 循环查询每一页的数据;
4. 处理查询结果;
5. 关闭游标和连接。
注意,以上代码仅供参考,需要根据实际情况进行修改和优化。同时,为了避免 SQL 注入攻击,建议使用参数化查询。