LIMIT(5,3)语句失效:如何查询Employees表第5-7条记录?
问题排查与解决办法
嘿,我来帮你看看这个查询的问题所在~
你执行的语句没生效,主要有两个关键问题:
- LIMIT语法错误:MySQL的LIMIT子句不需要加括号,你写的
LIMIT(5,3)不符合语法规范,数据库没法识别这种写法。 - 偏移量计数逻辑错了:LIMIT的第一个参数是偏移量,是从0开始计数的,不是从1开始。如果想取第5、6、7条记录,偏移量应该是4(第1条对应偏移0,第5条就对应偏移4),而不是5——要是写偏移5的话,会从第6条开始取,就漏掉了第5条。
正确的SQL语句
调整后的正确查询语句应该是这样:
SELECT * FROM Employees ORDER BY EmployeeID LIMIT 4, 3;
可选的更直观写法(适用于支持窗口函数的数据库)
如果你的数据库是MySQL 8.0+、PostgreSQL或者SQL Server这类支持窗口函数的,也可以用ROW_NUMBER()来实现,这种写法不用纠结偏移量,直接指定行号范围就行,可读性更强:
SELECT * FROM ( SELECT *, ROW_NUMBER() OVER(ORDER BY EmployeeID) AS row_num FROM Employees ) AS temp_table WHERE row_num BETWEEN 5 AND 7;
内容的提问来源于stack exchange,提问作者Archita Sundaray
相关产品推荐
相关产品推荐

