1
我想尝试根据另一个表中的搜索在SQL表中设置两个值。我的查询如下:更新超过25,000个条目的表
UPDATE $postmeta
SET meta_key = '_bbps_topic_status',
meta_value = '1'
WHERE post_id IN (
SELECT ID
FROM $posts
WHERE post_type='topic'
)
我想为25,148行整个表做到这一点,但我甚至增加了服务器上的所有限制之后,得到一个内存错误。我知道MySQL不允许你以500的组进行批量操作,但是有什么方法可以编写脚本来将这个操作分成更小的块?
在此先感谢!
编辑:查询包括日期范围:
UPDATE $postmeta
SET meta_key = '_bbps_topic_status',
meta_value = '1'
WHERE post_id IN (
SELECT ID
FROM $posts
WHERE post_type='topic'
AND DATE_SUB(
CURDATE(),
INTERVAL 30 DAY
) <= post_date
)
嘿哈立德 - 我添加了一个更复杂的查询,因为我凑我不知道如何在你使用的JOIN命令中包含它。 – RoboRob 2014-09-05 19:31:29
@RoboRob当你没有比较这个表达式的结果时,使用'DATE_SUB'部分的目的是什么? – 2014-09-05 19:33:35
我正在尝试获取超过30天的类型“主题”的所有帖子。当我在SELECT语句中运行它时,它似乎按照我的意愿做了。 – RoboRob 2014-09-05 19:36:23