MySQL创建查找和替换查找表

时间:2016-11-16 15:13:23

标签: php 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'包含'Value'。

我现在如何将“新值”复制到Table_A中的“参考”?

我能想到的唯一方法是选择ID = x的新值,并将其复制到table_a中的引用,其中ID = y。但它似乎并不是最有效的。

1 个答案:

答案 0 :(得分:1)

在数据库中,批量执行操作会更有效。 您的问题陈述是,您希望将某个表中的original value替换为source},并在其他表中替换为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

我不是100%确定mysql语法,但我希望你能得到主旨。数据库通常非常擅长此类操作,因此性能也不应成为问题。

当然,您可以根据需要修改条款以满足您的需求。与Lookup不区分大小写,忽略空值等。