0

これは私の頭をブレーキングしています。クライアントの古い記事の評価を古いDBから新しいDBに移動します。これらの間の参照は、記事のタイトルでダッシュで区切られた最初の単語のみです。SELECTを使用して必要な情報を取得することはできますが、結果を使用して新しいテーブルを更新する方法がわかりません。

更新が必要なテーブル

UPDATE 
newDB.newtable.rating
SET  newDB.newtable.rating.rating_count = 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 に答える