• MSSQL update 多表关联更新


    1 update tMeter set  字段= t.源自段  from (
    2         select * from 源表信息
    3 ) t
    4 where 关联条件

    实际demo:

    1 UPDATE dbo.WX_TWODIMENCODE_INFO SET 
    2     wti_scan_views=t.count FROM (
    3     SELECT COUNT(*) AS 'count',lci_erector_scene_id FROM LOTTERY_CODE_INFO
    4        WHERE lci_type=40 AND lci_erector_code_scantime IS NOT NULL
    5        GROUP BY lci_erector_scene_id
    6     ) AS t
    7     WHERE wti_scene_id=t.lci_erector_scene_id

    跨库更新

     1 不同服务器数据库之间的数据操作
     2  
     3 --创建链接服务器 
     4 exec sp_addlinkedserver 'ITSV' , '' , 'SQLOLEDB' , '远程服务器名或ip地址' 
     5 exec sp_addlinkedsrvlogin 'ITSV' , 'false' , null , '用户名' , '密码' 
     6  
     7 --查询示例 
     8 select * from ITSV.数据库名.dbo.表名 
     9  
    10 --导入示例 
    11 select * intofrom ITSV.数据库名.dbo.表名 
    12  
    13 --以后不再使用时删除链接服务器 
    14 exec sp_dropserver 'ITSV' , 'droplogins' 
    15  
    16 --连接远程/局域网数据(openrowset/openquery/opendatasource) 
    17 --1、openrowset 
    18  
    19 --查询示例 
    20 select * from openrowset('SQLOLEDB' , 'sql服务器名' ; '用户名' ; '密码' , 数据库名.dbo.表名) 
    21  
    22 --生成本地表 
    23 select * intofrom openrowset('SQLOLEDB' , 'sql服务器名' ; '用户名' ; '密码' , 数据库名.dbo.表名) 
    24  
    25 --把本地表导入远程表 
    26 insert openrowset( 'SQLOLEDB' , 'sql服务器名' ; '用户名' ; '密码' , 数据库名.dbo.表名) 
    27 select *from 本地表 
    28  
    29 --更新本地表 
    30 update b 
    31 set b.列A=a.列A 
    32 from openrowset('SQLOLEDB' , 'sql服务器名' ; '用户名' ; '密码' , 数据库名.dbo.表名) as a inner join 本地表 b 
    33 on a.column1 = b.column1 
    34  
    35 --openquery用法需要创建一个连接 
    36  
    37 --首先创建一个连接创建链接服务器 
    38 exec sp_addlinkedserver 'ITSV' , '' , 'SQLOLEDB' , '远程服务器名或ip地址' 
    39 --查询 
    40 select * 
    41 FROM openquery(ITSV , 'SELECT * FROM 数据库.dbo.表名') 
    42 --把本地表导入远程表 
    43 insert openquery(ITSV , 'SELECT * FROM 数据库.dbo.表名') 
    44 select * from 本地表 
    45 --更新本地表 
    46 update b 
    47 set b.列B=a.列B 
    48 FROM openquery(ITSV , 'SELECT * FROM 数据库.dbo.表名') as a 
    49 inner join 本地表 b on a.列A=b.列A 
    50  
    51 --3、opendatasource/openrowset 
    52 SELECT * 
    53 FROM opendatasource('SQLOLEDB' , 'Data Source=ip/ServerName ; User ID=登陆名 ; Password=密码').test.dbo.roy_ta 
    54 --把本地表导入远程表 
    55 insert opendatasource('SQLOLEDB' , 'Data Source=ip/ServerName ; User ID=登陆名 ; Password=密码').数据库.dbo.表名 
    56 select * from 本地表 
  • 相关阅读:
    Java -- 最简单的认识重载
    maven打包spring boot项目及跳过test文件
    springboot 配置elasticsearch Java High Rest Client
    面向对象与面向过程的区别
    vue --- axios拦截器+form格式请求体
    kotlin --- 时间戳与字符串互相转换
    各种技术的路线图
    bpmn-js起步
    纵观 jBPM:从 jBPM3 到 jBPM5 以及 Activiti5
    几大工作流引擎对比
  • 原文地址:https://www.cnblogs.com/szfhquan/p/4079416.html
Copyright © 2020-2023  润新知