使用另一个表MySql中的特定select来更新新表

时间:2012-08-20 20:27:49

标签: mysql select sql-update

这个是我的头。将客户的旧文章评级从旧DB移动到新DB,其中它们之间的唯一引用是第一个单词,在文章标题中用短划线分隔。我能够通过使用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 ) ,  '%' ) 

任何帮助表示赞赏!

1 个答案:

答案 0 :(得分:1)

如果我理解正确,你可以在old.title中找到类似thisisauniquekey-september-2012的内容,并在news_items.title中输入值'thisisauniquekey-somethingelse'。

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

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;