• sqlserver 将一个表中的某些字段更新到另一个表中(转载)


    来源:https://blog.csdn.net/qq_23888451/article/details/86615555 

    https://blog.csdn.net/cyxinda/article/details/78254110

    一、Oralce和DB2都支持的语法:
    UPDATE A
    SET (A1, A2, A3) = (SELECT B1, B2, B3 FROM B WHERE A.ID = B.ID)

    二、MS SQL Server不支持这样的语法,相对应的写法为:
     方式一:

    UPDATE A
        SET A1 = B1, A2 = B2, A3 = B3
        FROM A LEFT JOIN B ON A.ID = B.ID

     此处也可以 right join 、 inner join

     方式二:

    UPDATE A
        SET A1 = B1, A2 = B2, A3 = B3
        FROM A, B WHERE A.ID = B.ID

    三、Oracle和DB2中的写法
    UPDATE A
        SET (A1, A2, A3) = (SELECT B1, B2, B3 FROM B WHERE A.ID = B.ID)
        WHERE ID IN (SELECT B.ID FROM B WHERE A.ID = B.ID)

    注:如果要更新的表A数据量过大,而且仅更新表A的部分数据,那么,需要在前面的语句中加入where筛选要操作的数据。

    四、案例:

    公司做的业务有个需求是将A表中的某些字段数据,更新到B表中的相应含义的字段中。
    假设user、score表的字段如下:
    user表

    userId username password sex addr phone
    1 张珊 123 男 北京市 1562356586
    2 李思 456 女 北京市 1562354256
    3 王武 789 男 北京市 1562345544
    4 王柳 113 男 北京市 1562445778
    score表

    scoreId userId username score course phone
    1 1 80 语文
    2 1 85 数学
    3 3 52 语文
    4 2 67 数学
    现在score表中的username和phone字段是空的,需要从user表中,查找出相应的值插入score表中,SQL语句如下:

    update score
    set score.username=user.username,score.phone=user.phone
    from score,user
    where score.userId=user.userId

    五、相关扩展

    1将一张表中的数据插入到另一张表

     https://www.cnblogs.com/hao-1234-1234/p/8484353.html

    2跨服务器增删改查

     https://www.cnblogs.com/hao-1234-1234/p/10277324.html
  • 相关阅读:
    洛谷P3384 【模板】树链剖分
    hdu3518 Boring counting(后缀数组)
    CSL 的密码(后缀数组)
    洛谷P3809 【模板】后缀排序
    洛谷P2387 [NOI2014]魔法森林(LCT)
    洛谷P3366 【模板】最小生成树(LCT)
    Stanford机器学习课程(Andrew Ng)
    操作系统存储器管理选择题精练
    实验12:Problem I: 成绩排序
    实验12:Problem H: 整型数组运算符重载
  • 原文地址:https://www.cnblogs.com/hao-1234-1234/p/10975489.html
Copyright © 2020-2023  润新知