[更新:我使用的是 MySQL 4.1.25]
我认为这一定是一件简单的事情,但我是一个 SQL 菜鸟,需要一些帮助。我有一个类似于以下内容的查找表:
查找表
键 1,值 1
键 2,值 2
键 3,值 3
...
键N,值N
然后我有另一个表,其中有一列中的键(带有重复)的随机列表,我需要在相应的列中添加关联的值。
例如,第二个表可能是:
第二个表
键 3, ?
键 1, ?
键 1, ?
键 40, ?
我需要替换 second_table
中的 ?s来自 lookup_table
的值如下:
second_table(更新)
键 3,值 3
键 1,值 1
键 1,值 1
键 40,值 40
这似乎是一个简单的 SQL 查询应该解决的问题。有什么建议?
最佳答案
在使用连接更新(而不是执行子查询)时,我更喜欢以下语法。它允许您在更新结果之前查看结果并了解查询的正确性。
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
请注意,当您准备好更新时,请选择
update
中的所有内容。下来。更新 :感谢 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,所以希望其中之一会有所帮助。
关于SQL 查询 : how do I change a value according to a lookup table?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1002036/