[更新:我正在使用
MySQL 4.1.25]
我认为这一定很简单,但我是一个sql菜鸟,需要一些帮助.我有一个查找表,如下所示:
查找表
key1,value1
key2,value2
key3,value3
…
keyN,valueN
然后我有另一个表在一列中有一个随机的键列表(有重复),我需要在相应的列中添加相关的值.
例如,第二个表可能是:
second_table
key3,?
key1,?
key40,?
我需要用lookup_table中的值替换second_table中的?s,如下所示:
second_table(更新)
key3,value3
key1,value1
key1,value1
key40,value40
解决方法
使用连接更新(而不是执行子查询)时,我更喜欢以下语法.它允许您在更新结果之前查看结果并知道查询的正确性.
select st.key,lt.value --update st set value = lt.value from second_table st inner join lookup_table lt on st.key = lt.key
请注意,当您准备好进行更新时,请从更新时选择所有内容.
更新:感谢tekBlues,我发现上述内容至少适用于sql Server和Oracle. MysqL有一些不同的语法:
update second_table st inner join lookup_table lt on st.key = lt.key set st.value = lt.value
这些是大型RDBMS,所以希望其中一个是有用的.