暂无图片
MYSQL 8.0 为什么 LIMIT 后面不支持运算?
我来答
分享
暂无图片 匿名用户
MYSQL 8.0 为什么 LIMIT 后面不支持运算?
select id, identity_number, surname, name, mobile, sex, birthday, age, top_education, income_year, create_time, update_time 
from dba.personal_identity_info 
where 1=1 
and surname = '王'
order by create_time desc 
limit ((1-1)*10),10;

我来答
添加附件
收藏
分享
问题补充
1条回答
默认
最新
hello

在MySQL 8.0和许多其他数据库系统中,LIMIT子句通常期望常量值,并不直接支持在LIMIT子句内进行算术运算。这种设计符合SQL标准,有助于保持查询执行的清晰度和可预测性。

但仍然可以通过在LIMIT子句之外进行计算来实现所需的功能。例如,您可以在应用程序代码中或SQL查询中的子查询中计算LIMIT的值,然后在LIMIT子句中使用这些计算出的值。子查询计算出LIMIT的值,然后在主查询中使用该值。通过这种方式,即使不支持在LIMIT子句内进行直接算术运算,您仍可以实现所需的功能。

SELECT id, identity_number, surname, name, mobile, sex, birthday, age, top_education, income_year, create_time, update_time
FROM dba.personal_identity_info
WHERE surname = '王'
ORDER BY create_time DESC
LIMIT (SELECT (1 - 1) * 10), 10;

暂无图片 评论
暂无图片 有用 1
chengang
2023-09-28
mysql 这么写是无法执行的。
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏