SQL 查询 : how do I change a value according to a lookup table?

标签 sql

[更新:我使用的是 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/

相关文章:

mysql - 管道分隔与单独的行

mysql - 如何在 ssp 简单类中使用 UNION ALL?

mysql - 在mysql查询<>中同时使用大于号和小于号

php - 初学php数据库查询

sql - 如何将两个日期之间的差异四舍五入到小时

mysql - SQL 查询 - 在小于或等于日期加入

sql - PostgreSQL - 获取统计数据

sql - 合并两个 Postgresql 查询

PHP-Laravel : How to save without time overlapping in DB

java - Worklight、Java SQL 适配器、适配器部署失败