这个是我的头。将客户的旧文章评级从旧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 ) , '%' )
任何帮助表示赞赏!
答案 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;