SQL 将2张不相关的表拼接成2列,批量更新至另一张表

时间:2022-04-02 04:45:17
update SO_Master set LotteryNo=t2.LotteryNo,UpdateTime=GETDATE()
--select sm.LotteryNo,sm.SysNo,t2.LotteryNo
from SO_Master sm
inner join (
select
SysNo,ROW_NUMBER() over(order by sysno asc) rIndex
from SO_Master
where WebSiteSysNo =6 and SOAmt >=800 and LotteryNo is null AND OrderDate >='2016/09/22 00:00:00' and OrderDate<'2016/09/24 00:00:00' and Status not in(-1,-2,-3)
) t1 on t1.SysNo=sm.SysNo
inner join (
select
LotteryNo,ROW_NUMBER() over(order by sysno asc) rIndex
from SO_Master_Lottery
where status=0 and WebSiteSysNo = 6
) t2 on t1.rIndex=t2.rIndex
where sm.SysNo=1422087 and sm.LotteryNo is null
--order by t1.SysNo asc,t2.LotteryNo asc

SO_master表简称SO,SO_Master_Lottery表简称SML,

1.首先将SO表列查询出来作为更新条件,然后使用Row_Number排序获得序列

2.将SML表列查询出来作为更新值,然后使用Row_number排序获得序列

3.通过序列号将SO表和SML表关联起来,获得所需的更新条件和更新值,如下代码:

select sm.LotteryNo,sm.SysNo,t2.LotteryNo
from SO_Master sm
inner join (
select
SysNo,ROW_NUMBER() over(order by sysno asc) rIndex
from SO_Master
where WebSiteSysNo =6 and SOAmt >=800 and LotteryNo is null AND OrderDate >='2016/09/22 00:00:00' and OrderDate<'2016/09/24 00:00:00' and Status not in(-1,-2,-3)
) t1 on t1.SysNo=sm.SysNo
inner join (
select
LotteryNo,ROW_NUMBER() over(order by sysno asc) rIndex
from SO_Master_Lottery
where status=0 and WebSiteSysNo = 6
) t2 on t1.rIndex=t2.rIndex
where sm.SysNo=1422087 and sm.LotteryNo is null
order by t1.SysNo asc,t2.LotteryNo asc

4.使用批量更新的SQL执行语法,进行内连接,由更新主表SO_master表关联t1更新条件表,然后内链接t2获得更新值,t1和更新主表SO_master通过外键关联,t2是根据t1的序号关联t2的,然后加上所有查询条件,

主要是带上更新值的列LotteryNo

其他sql介绍:

下面这个Sql是按照Row_number更新数据的,仅供参考

update SO_Master set LotteryNo =t1.LotteryNo,UpdateTime=GETDATE() from SO_Master sm
inner join(
select SysNo, 168799-ROW_NUMBER()over(order by sysno asc) LotteryNo from SO_Master
where WebSiteSysNo =6 and SOAmt >=800 and LotteryNo is null AND OrderDate >='2016/09/22 00:00:00' and OrderDate<'2016/09/24 00:00:00' and Status not in(-1,-2,-3)
) t1 on sm.SysNo=t1.SysNo
where sm.LotteryNo is null

  

SQL 将2张不相关的表拼接成2列,批量更新至另一张表的更多相关文章

  1. SQL Server 将两行或者多行拼接成一行数据

    一个朋友,碰到一个问题. 就是查询出来的结果集,需要每隔三行.就将这三行数据以此拼接为一行显示.起初我想着用ROW_NUMBER加CASE WHEN去做,发现结果并非我预期那样. 结果如下: 由于别人 ...

  2. SQL server将查询到的多行结果,拼接成字符串&lpar;列转行&rpar;

    select stuff(( ,,'') as UserNamestr 注释:查询出tabname表中的UserName列的所有内容,并将内容拼接成UserNamestr

  3. mysql批量更新update中的锁表机制

    mysql的行锁是通过索引加载的,即行锁是加在索引响应的行上的,要是对应的SQL语句没有走索引,则会全表扫描,行锁则无法实现,取而代之的是表锁. CREATE TABLE SIMPLE_USER( I ...

  4. SQL Server单表已700w&plus;将普通表转换成分区表

    最近项目中,某个表数据量爆发时增长,单表已700w+,读写性能急剧下降,所以考虑加入分区表以解燃眉之急,后续还是要分表分库,当然这是后话.下面简要说一下将普通表转为分区表的步骤.   一.创建文件组 ...

  5. SQL Server单表已700w&plus;将普通表转换成分区表1

    最近项目中,某个表数据量爆发时增长,单表已700w+,读写性能急剧下降,所以考虑加入分区表以解燃眉之急,后续还是要分表分库,当然这是后话.下面简要说一下将普通表转为分区表的步骤.   一.创建文件组 ...

  6. oracle 10g 用dbms&lowbar;xmlgen将数据表转成xml格式

    oracle 10g 用dbms_xmlgen将数据表转成xml格式 oracle 10g 用dbms_xmlgen将数据表转成xml格式 oracle用plsql将sql查询的所有数据导出为xml

  7. mysql批量update操作时出现锁表

    https://www.cnblogs.com/wodebudong/articles/7976474.html 最近遇到一件锁表的情况,发现更新的语句where检索的字段,没有建索引,且是批量操作的 ...

  8. &lbrack;原创&rsqb;SQL 把表中某一个列按照逗号拼接成一行

    在我们开发的过程中,难免遇到一种场景,把某个表中的的某个列的值拼接成用逗号隔开的一行数据 如图:我们把UserId列拼接成一行数据 -------> 为此我写了一个存储过程来解决此类问题. -- ...

  9. sql 使用 FOR XML PATH实现字符串拼接

    sql中经常需要把多个行数据合成一行下面是利用 FOR XML PATH来实现的简单介绍. 1,把图一的转换为图二: SELECT articleID, (),tagID)+',' FROM arti ...

随机推荐

  1. Sublime的使用

    1.一个可扩展性强的编辑工具 2.如何安装扩展 通过View->Show Console菜单打开命令行. 按图操作: 在控制台输入,然后回车: import urllib.request,os; ...

  2. &lbrack;转&rsqb;如果我有jQuery背景,我应该如何切换到AngularJS的思维模式?

    导言 *上有一个人问了一个问题:如果我有jQuery背景,我应该如何切换到AngularJS的思维模式? 有一个回复非常经典,获得了两千多票. 为了让国内开发者也能领略到其中的 ...

  3. oracle学习笔记(五) SQL操作符

    SQL操作符 算术操作符:+加,-减,*乘,/除 比较操作符: <,>,=,!=,<>,<=,>= 常用的判断,<>和!=相同 between $low ...

  4. iOS逆向开发(6):微信伪造位置

    仍然以微信为例,实战地练习一下使用Reveal.iOSOpenDev等工具注入APP的流程,积累经验.这一系列的文章都是学习过程的总结,不带任何商业目的. 本文解决一个问题:如何伪造一个经纬度,在微信 ...

  5. Java基础学习-三元运算符和键盘录入的基本步骤和使用

    1.三元运算符的执行流程   package com.denniscui_05; /*  * 三元运算符:  *         关系表达式?表达式1:表达式2  *  * 执行流程:  *      ...

  6. android 7&period;0 调用系统相机崩溃的解决方案&lpar;非谷歌官方推荐&rpar;

    解决方案: 1.(推荐)7.0之后你的app就算有权限,给出一个URI之后手机也认为你没有权限. 不用修改原有代码,在Application的oncreate方法中:(或者直接放在调用相机的activ ...

  7. centos7修改root根目录

    1.拷贝/root 原目录的东西到新目录中(包括.xxx文件) /abc 2.修改配置文件 vi /etc/passwd root:x:0:0:root:/root:/bin/bash ==> ...

  8. 协作工具 discord 和 slack

    discord: https://discordapp.com/ slack: www.slack.com

  9. PostgreSQL PITR实验

    磨砺技术珠矶,践行数据之道,追求卓越价值 回到上一级页面: PostgreSQL基础知识与基本操作索引页     回到*页面:PostgreSQL索引页 看PostgreSQL中与PITR相关的设定 ...

  10. win7 安装 VMware 出错解决办法

    win7旗舰版安装VMware,安装过程中发生了如下错误.系统提示:“You may not install this product in the root directory of any dri ...