加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQL查询:如何根据查找表更改值?

发布时间:2020-12-12 07:44:03 所属栏目:MsSql教程 来源:网络整理
导读:[更新:我正在使用 MySQL 4.1.25] 我认为这一定很简单,但我是一个SQL菜鸟,需要一些帮助.我有一个查找表,如下所示: 查找表 key1,value1 key2,value2 key3,value3 … keyN,valueN 然后我有另一个表在一列中有一个随机的键列表(有重复),我需要在相应的列中添加
[更新:我正在使用 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

这似乎是一个简单的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

请注意,当您准备好进行更新时,请从更新时选择所有内容.

更新:感谢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,所以希望其中一个是有用的.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读