2016-11-16 47 views
1

我需要創建一種方法來自動縮短MySQL中的表中的某些值。MySQL創建查找和替換查找表

我想要做的是創建一個表,它將有三列。 '原始價值'和'新價值'和一個ID。然後使用查詢來檢查'原始值'中是否存在'Table_A'中的列,並將其更改爲相應的'新值'。

我用,以找出是否該值存在查詢:

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

讓我們說「參考」包含「這是一個值」。 'Original_Value'包含'This is a value'和'New Value'contains'Value'。

如何將'新值'複製到Table_A中的'參考'?

我能想到的唯一方法是通過選擇ID = x的新值並將其複製到table_a中的引用中,其中ID = y。但它似乎並不是最有效的。

回答

1

在數據庫中,只進行批量操作會更有效率。 您的問題陳述是,您希望在某些其他表格中將某個表格中的original value替換爲new value(我們將其稱爲lookup),其中查找表中的reference_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.與查找不區分大小寫,忽略空值等。