MySQL嵌套查询

来源:互联网 发布:ios武侠游戏知乎 编辑:程序博客网 时间:2024/06/06 04:02

一个很简单的需求,修改一个表中前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语法还是挺奇怪的。。。

0 0
原创粉丝点击