zoukankan      html  css  js  c++  java
  • 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
    )

     

  • 相关阅读:
    golang生成树状菜单
    golang自定义某种类型时的打印输出
    【转】搭建自己的邮件服务器
    【转】【VSCode】golang的调试配置launch.json
    【转】Nvidia GeForce MX250 Lower-End Dedicated Graphics
    【转】Alertmanager高可用
    【转】Prometheus 和 Alertmanager实战配置
    YAML格式的语法
    golang写一个占用大内存的程序
    [转]TDengine常用命令及SQL
  • 原文地址:https://www.cnblogs.com/taomylife/p/3441139.html
Copyright © 2011-2022 走看看