2016-11-16 7 views
1

MySQLのテーブルの特定の値を自動的に短縮する方法を作成する必要があります。MySQLルックアップテーブルの検索と置換を作成する

私がしたいのは、3つの列を持つテーブルを作成することです。 「元の値」と「新しい値」とID。次に、クエリを使用して 'Table_A'の列がこの 'オリジナル値'に存在するかどうかをチェックし、それを対応する '新しい値'に変更します。

私は値が存在するかどうかを調べるために使用しましたクエリ:

SELECT EXISTS (SELECT Reference FROM table_a) FROM value_lookup WHERE Original_Value != ''; 

は、「リファレンス」「これは値である」が含ま言うことができます。 'Original_Value'には 'This is a value'が含まれ、 'New Value'には 'Value'が含まれます。

テーブル'A 'の'参照 'に'新しい値 'をコピーする方法はありますか?

私が考えることができる唯一の方法は、ID = xの新しい値を選択し、それをID = yのtable_aの参照にコピーすることです。しかし、それは最も効率的ではないようです。

答えて

1

データベースでは、操作を一括して行う方がずっと効率的です。 ルックアップテーブルのreference_valueが元のテーブルと一致する場合は、他のテーブル(lookupと呼ぶこともあります)でnew valueで一部のテーブル(sourceとします)のoriginal valueを置き換えることが問題です。次のSQL文に変換するでしょう

update source a 
    left join lookup b on 
     a.originalValue = b.referenceValue 
set 
    a.originalValue = b.newValue 
where 
    a.originalValue != b.newValue 

私は、MySQLの構文の100%確実ではないが、私はあなたの要点を取得願っています。データベースは通常、そのような操作に非常に熟練しているので、パフォーマンスも問題ではありません。

e.xでは、句を必要に応じて変更できます。大文字と小文字を区別しないLookupとの一致、null値の無視など