mysql update select

介绍

表结构为:

CREATE TABLE `rule_base)` (
  `pk_rule_id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `rule_name` varchar(64) DEFAULT NULL COMMENT '名称',
  `rule_status` smallint(6) DEFAULT NULL COMMENT '状态:0有效,1无效',
  PRIMARY KEY (`pk_rule_id`)
) ENGINE=InnoDB AUTO_INCREMENT=573 DEFAULT CHARSET=utf8;

sql:

UPDATE rule_base
SET rule_status = 1
where rule_name ='xxx' ORDER BY createtime limit 1

没毛病;

然后试了下另一个sql

UPDATE rule
SET rule_status = 1
where rule_name ='xxx' ORDER BY createtime limit 1,1

这样就会报错
[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1' at line 3

再试:

UPDATE t_rule_base
SET rule_status = 1
where pk_rule_id in 
(SELECT pk_rule_id from t_rule_base where rule_name like '天%' ORDER BY createtime limit 1,2)

还是报错...貌似内层不能有limit子句
[Err] 1235 - This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'

再来,加了个select嵌套:

UPDATE t_rule_base
SET rule_status = 1
where pk_rule_id in (
select * from (SELECT pk_rule_id from t_rule_base where rule_name like '天%' ORDER BY createtime limit 1,2) t)

成了!!!

顺便说下这样也是不行的:

UPDATE (SELECT pk_rule_id from t_rule_base where rule_name like '天%' ORDER BY createtime limit 1,2) t
SET rule_status = 1
全部评论
楼主666
点赞 回复 分享
发布于 2019-11-22 15:03

相关推荐

07-29 14:27
门头沟学院 Java
LMQICU:大暴雨阁下真的没绷住
点赞 评论 收藏
分享
昨天 14:06
门头沟学院 Java
点赞 评论 收藏
分享
07-09 20:50
门头沟学院 Java
码农索隆:1.教育背景和荣誉证书合二为一。 2.获奖项目理一遍,你做了什么,对你求职的岗位有什么帮助,没有就删掉。 3.技能特长和教育背景交换位置。 4.技能特长写的太差,上网上找简历参考。都不用问你别的,一个redis就能把你问住,写写你具体会redis哪些方面的知识。
点赞 评论 收藏
分享
Vincent777...:实习经历可以考虑放上去,对于软件使用方面可以细化一些,比如调整为:熟悉基于LSDYNA的瞬态动力学仿真分析,熟悉基于WORKBENCH的结构拓扑优化
我的简历长这样
点赞 评论 收藏
分享
评论
1
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务