暂无图片
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
打赏 0
chengang
2023-09-28
mysql 这么写是无法执行的。
回答交流
Markdown


请输入正文
提交
相关推荐
mysql-8.0.26 到mysql-8.0.27, 直接替换二进制文件可以实现升级吗?
回答 2
可以,重新启动后会自动升级。
MySQL 随机取字符,有时候获取到空值,怎么样才避免呢? 保证字符串是多行排?
回答 3
路过
mysql支持修改分区表的分区列的类型或者长度吗?
回答 2
可以修改的,但是在表中有数据的情况下,修改列的数据类型会容易造成数据混乱,数据长度在允许的范围内是可以修改的mysql>showcreatetableemployees\G1.rowTable:
mysql触发器怎么做,屏蔽源数据?
回答 1
mysql没有Insteadof这句对原表不执行操作,只执行触发器的写法
mysql迁移到达梦卡在迁移数据,怎么解决?
回答 1
我一般用达梦自带迁移工具dts,迁移过程中出现的大部分都是字符类型的报错,根据相应的提示修改即可
mysql字符串如何删除字符串的最后一个特定字符?
回答 1
只能说给你个方向。用substr。selectsubstr(字段,1,n1)fromtn是字段长。等于最右边不显示。
MySQL 怎么判断一个表需要重建了呢?
回答 1
已采纳
执行完毕就是重建了。optimizetable优化表,收集统计信息ANALYZETABLE整理碎片altertabletabnameENGINEInnoDB等于上面两个加在一起。
现在mysql 高可用,包括主从、集群 方案 ,哪个是最流行?
回答 2
已采纳
MHA(MasterHighAvailabilityManagerandToolsforMySQL)目前在Mysql高可用方面是一个相对成熟的解决方案。它是日本的一位MySQL专家采用Perl语言编写
请问下大家,这个mysql 存储过程 报错1064,如何解决?见下图
回答 1
存储函数报错createproceduresaveDate2(innumint,inageaint,innameavarchar(16),inphoneavarchar(16))最好给字符串类型一个长
MySQL8.0如何查询 异常断开的 客户端 是哪个IP, 哪个数据库用户名
回答 3
已采纳
可以做一个mysql的审计,大致过程就是专门创建一个数据库,里面创建一张表来存储数据库的访问信息,可以在mysql的my.cnf里面配置initconnect,当有用户访问数据库的时候就会写入到那个表