我需要创建一种方法来自动缩短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。但它似乎并不是最有效的。
答案 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不区分大小写,忽略空值等。