将MySQL列中的值从第x行替换为第y行

时间:2016-08-27 18:42:53

标签: mysql sql wordpress replace rows

我需要从wordpress post table替换发布日期。 由于迁移,有大约800.000个帖子条目具有相同的日期。

如何用#34;从第x行替换为第"?

例如:

  • 第1行 - 10.000应该有日期2013-01-02 09:20:10
  • 第10.001行 - 20.000应该有日期2013-02-05 12:30:21

依旧......

或者可能用帖子ID替换?

我知道有一个SQL查询来执行此操作,但我不记得哪一个以及如何正确使用它。

2 个答案:

答案 0 :(得分:0)

尝试在sql中添加LIMIT来更新行:

UPDATE {table} 
SET {datefield} = "{desired date}" 
WHERE {datefield} = "{bad date}" 
LIMIT 10000;

这将根据需要一次更新10000行,但是它不是特别挑剔哪些按哪种顺序更新,通常它将在数据库的内部顺序中是(大致)按时间顺序排列。

您可以使用其他任何数据来确定哪些记录应该更新哪个日期?

答案 1 :(得分:0)

这不是你要求的,但可能会更好。您可以创建不同的时间戳,就像每隔X秒创建一个帖子一样:

update posts
set created = timestamp('2013-01-02 12:00:00') + interval id * 140 second
where 1=1

http://sqlfiddle.com/#!9/a6c7e0/2

你甚至可以让它们看起来随意:

update posts
set created = 
  timestamp('2013-01-02 12:00:00')
  + interval id * 140 second
  + interval floor(rand()*140) second
where 1=1

http://sqlfiddle.com/#!9/b394c/1