具有复杂条件的SQL Update

时间:2015-03-29 13:51:39

标签: mysql sql sql-update

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

表1:

   name                num
 abc.xyz.com           1234

表2:

索引名称num

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. 获得的索引
  4. 使用table1.num
  5. 更新table2.num

    在此示例中,基于上面的示例

    1. 我们得到索引1
    2. 我们得到table2中的第二行
    3. 将table2中第二行的数量从6789更新为1234
    4. 请帮我写这个复杂条件的SQL查询..

      提前致谢

1 个答案:

答案 0 :(得分:0)

如果我正确理解逻辑,此查询应返回您想要的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;