zoukankan      html  css  js  c++  java
  • SQL基础(二)-- 多张表Update语法

    一、当用一个表中的数据来更新另外一个表中的数据时(两张表要有关联):

           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子句中被修改的字段的限定符使用

            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 或使用本身的表名。

            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)

    更新一列:

    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
    )

     --另一种修改形式
    UPDATE SO_Item SET SO_Item.Quantity=Quantity-(SELECT SUM(Quantity) FROM @SaleRule_ItemList AS Rule_Item WHERE Rule_Item.ProductSysno=SO_Item.ProductSysno)
    FROM @SO_ItemList AS SO_Item 
    WHERE SO_Item.ProductSysno IN (SELECT ProductSysno FROM @SaleRule_ItemList)
  • 相关阅读:
    图像检索(image retrieval)- 11
    图像检索(image retrieval)- 10相关
    Mock.js简易教程,脱离后端独立开发,实现增删改查功能
    Azure Monitor (3) 对虚拟机磁盘设置自定义监控
    Azure Monitor (1) 概述
    Azure SQL Managed Instance (2) 备份SQL MI
    Azure Virtual Network (17) Private Link演示
    Azure Virtual Network (16) Private Link
    Azure Virtual Network (15) Service Endpoint演示
    Azure Virtual Network (14) Service Endpoint服务终结点
  • 原文地址:https://www.cnblogs.com/BounceGuo/p/10234114.html
Copyright © 2011-2022 走看看