0

这个让我头疼。将客户的旧文章评级从旧数据库移动到新数据库,其中它们之间的唯一引用是第一个单词,在文章标题中用破折号分隔。我可以使用 SELECT 提取我需要的信息,但我不知道如何使用结果来更新新表

需要更新的表

UPDATE 
newDB.newtable.rating
SET  newDB.newtable.rating.rating_count = oldvotes

为我提供有关 oldvotes 信息的选择

SELECT 
    oldvotes.votes AS oldvotes, old.title AS oldtitle,newtable.news_items.title as newtitle,newtable.news_items.id AS newID
FROM 
    oldDB.news_items AS old
INNER JOIN 
     oldDB.news_items.rating_count AS oldvotes 
ON 
     oldvotes.article_id = old.id
INNER JOIN 
      newDB.newtable.news_items
ON 
      newDB.newtable.news_items.title 
LIKE CONCAT
      (  '%', SUBSTRING_INDEX( old.title,  '- ', 1 ) ,  '%' ) 

任何帮助表示赞赏!

4

1 回答 1

1

如果我理解正确,您在 old.title 中有类似 thisisauniquekey-september-2012 的内容,而在 news_items.title 中有值“thisisauniquekey-somethingelse”。

oldratings您可以使用您现在运行的相同查询选择一个键(比标题更快的键)和 oldvotes 到一个临时表中,例如:

SELECT news_items.keytobeusedonnewtable AS keyforrating, oldvotes.votes as oldvotes FROM etc.

然后您可以使用以下命令运行更新oldratings

UPDATE newDB.newtable.rating SET rating_value = oldvotes FROM
newDB.newtable.rating JOIN oldratings
    ON rating.keyforrating = oldvotes.keyforrating;
于 2012-08-20T20:46:33.277 回答