MySQL嵌套查询

一个很简单的需求,修改一个表中前1000条数据。
这个会场easy我是这样写的

UPDATE member SET is_agent = 1 WHERE id IN(SELECT id FROM member LIMIT 0,1000);

感觉这样写一点 这些都没错,先查出前1000条数据的id,然后直接修改这些id 的数据就可以了,可是mysql爆粗了,如下

This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'

很奇怪,怎么会出这样的问题,这是最简单的嵌套查询啊。。。
后来查询资料,发现这样的写法不对,也就是所谓的语法错误,修改了一下如下

UPDATE member SET is_agent = 1 WHERE id IN (SELECT t.id FROM (SELECT id FROM member LIMIT 0,1000) AS t);

给要查的表起个别名,这也够怪的,后来看了网上,也可以这样改写,直接将表放在from后面,就省略了别名这一步骤。当然是对查询语句有效

SELECT t.id FROM (SELECT * FROM member LIMIT 0,100) AS t;

MySQL语法还是挺奇怪的。。。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值