【问题标题】:SQL Update with complex conditions条件复杂的 SQL 更新
【发布时间】:2015-03-29 13:51:38
【问题描述】:

我有两个表 table1(name, num) 和 table2(index, name, num) 表 1 名称列有长名称,表 2 名称列有长名称和短名称。

表1:

   name                num
 abc.xyz.com           1234

表2:

索引名称编号

1            abc            1234
1         abc.xyz.com       6789
2            abc            1111
2         abc.xyz.com       2222

我需要使用以下条件更新 table2 列“num”:

  1. 从 table2 获取索引,其中 table1.name 的短名称 = table2.name AND table1.num = table2.num
  2. 获取长名条目,其中长名的索引=从条件1获得的索引
  3. 用 table1.num 更新 table2.num

本例中,基于上例

  1. 我们得到索引 1
  2. 我们得到 table2 中的第二行
  3. 将table2中第二行的编号从6789更新为1234

请帮我编写这个复杂条件的 sql 查询..

提前致谢

【问题讨论】:

  • 什么是短名和长名?举个例子,我在这里只能看到名称列。怎么知道是短名还是长名?

标签: mysql sql sql-update


【解决方案1】:

如果我理解正确的逻辑,这个查询应该返回你想要的num

select t2.*, t1.num
from table2 t2 join
     table1 t1name
     on t2.name = t1name.name;

如果是这样,你可以把它变成update

update table2 t2 join
       table1 t1name
       on t2.name = t1name.name
    set t2.num = t1.num
    where t2.num <> t1.num;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-20
    • 1970-01-01
    • 1970-01-01
    • 2019-02-03
    • 1970-01-01
    • 2011-03-19
    • 1970-01-01
    相关资源
    最近更新 更多