首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在MYSQL 5.1.11版中更新表的前5000行的列

问在MYSQL 5.1.11版中更新表的前5000行的列
EN

Stack Overflow用户
提问于 2011-10-08 22:28:21
回答 2查看 838关注 0票数 0

我有一种情况,我需要批量更新表中某列的一些值(即前5000行)。

所以我写了一个查询,如下所示

代码语言:javascript
复制
update clientdetails set lastupdateddate=now where id in (Select id from clientdetails limit 1,5000);

提示此错误,因为此版本的MYSQL不支持Limit 1,5000。那么有没有其他方法可以做到这一点呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-10-08 22:34:44

你就不能这样做吗:

代码语言:javascript
复制
update clientdetails set lastupdateddate=now where <your where clause> 
limit <desired limit>;
票数 3
EN

Stack Overflow用户

发布于 2011-10-08 22:50:07

MySQL在UPDATE和子查询方面有几个问题。

代码语言:javascript
复制
SELECT * FROM table1 WHERE foo IN (SELECT foo FROM table2 LIMIT 50)

是不可能的。但下面是:

代码语言:javascript
复制
SELECT * 
FROM table1 t
JOIN (SELECT foo FROM table2 LIMIT 50) as tmp
ON tmp.foo = t.foo;

我相信这个“(查询) as table”的东西被称为“虚拟临时视图”(但我在这里可能错了……)

您面临的第二个问题是,您无法更新当前正在读取的表。

但是(正如Griwes指出的)更新是有限度的:

代码语言:javascript
复制
UPDATE clientdetails 
SET lastupdateddate = NOW() 
ORDER BY id
LIMIT 0, 5000;

应该行得通。确保你已经得到了ORDER BY,否则你可能会更新一些行两次,而另一些永远不会更新。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7697458

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档