• update操作多张表


    sql 语句多张表UPDATE用法
    一、当用一个表中的数据来更新另一个表中的数据,T-SQL提供多种写法(下面列出了二种),但建议用第一种写法,虽然传统,但结构清晰。飞.飞Asp技术乐园
    并且要注意,当用一个表中的数据来更新另一个表中的数据时,二个表一定要有关联!
    1.
    update t1 set t1.c2 = t2.c2
    from t2
    where t1.c1 = t2.c1
    2.
    Update t1 set t1.c2 = t2.c2
    from t1 inner join t2 on t1.c1 = t2.c1
    二、FROM 子句中指定的表的别名不能作为 SET column_name 子句中被修改字段的限定符使用。飞飞As,p技术乐园例如,下面的内容无效:
    UPDATE titles
    SET t.ytd_sales = t.ytd_sales + s.qty
    FROM titles t, sales s
    WHERE t.title_id = s.title_id
    AND s.ord_date = (SELECT MAX(sales.ord_date) FROM sales)
     
    若要使上例合法,请从列名中删除别名 t 或使用本身的表名。
    1.
    UPDATE titles
    SET ytd_sales = t.ytd_sales + s.qty
    FROM titles t, sales s
    WHERE t.title_id = s.title_id
    AND s.ord_date = (SELECT MAX(sales.ord_date) FROM sales)

    2.
    UPDATE titles
    SET titles.ytd_sales = t.ytd_sales + s.qty
    FROM titles t, sales s
    WHERE t.title_id = s.title_id
    AND s.ord_date = (SELECT MAX(sales.ord_date) FROM sales)
     
    EXAMPLE
    update item_master i set i.contral_ma= ( select max(b.control_ma) from base_complex b where b.code=i.hs_code );
     

    更新一列:
    update mytab a set name=(select b.name from goal b where b.id=a.id)
    where exists (select 1 from goal b where b.id=a.id);
    更新多列:
    update mytab a 
       set  (name,address)=(select b.name,b.address
                                         from   goal b
                                         where  b.id=a.id)
       where  exists (select 1
                      from goal b
                      where  b.id=a.id )
    特别是要注意exists后面的语句:)这会让目标行不至于为NULL
     
    更新update多个关联表的SQL写法:
    update customers a
    set city_name=(select b.city_name from tmp_cust_city b where b.customer_id=a.customer_id)
    where exists (select 1
    from tmp_cust_city b
    where b.customer_id=a.customer_id
    )
    update 超过2个值
    update customers a
    set (city_name,customer_type)=(select b.city_name,b.customer_type
    from tmp_cust_city b
    where b.customer_id=a.customer_id)
    where exists (select 1
    from tmp_cust_city b
    where b.customer_id=a.customer_id
    )

     

  • 相关阅读:
    [原]openstack-kilo--issue(十一)Failed connect to 169.254.169.254:80; No route to host
    [转]pycharm active code
    [原]openstack-kilo--issue(九) heat stacks topology中图形无法正常显示
    [原]CentOS 7 网卡子接口的创建
    [转]Shell中read的常用方式
    [转]输出带颜色的shell
    第十七节:从状态机的角度async和await的实现原理(新)
    第十六节:时隔两年再谈异步及深度剖析async和await(新)
    第十一节:SQLServer事务写法、各种锁、事务隔离级别
    第十七节:SQL中的一些常用SQL积累(持续更新)
  • 原文地址:https://www.cnblogs.com/taomylife/p/3441139.html
Copyright © 2020-2023  润新知