2016-11-16 95 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.与查找不区分大小写,忽略空值等。