[SQL] MSSQL update 语句中的关联
将tableA 表中的所有title 用tableB中的titlename 更新掉,如果tableB中存在对应的关系
update tableA as a set a.title = (select b.titlename from tableB as b where a.id =b.xid)
上面的写法,无法在MSSQL中进行执行,因此
我们可以使用函数变相 脚本
传入参数相同
update tableA set title =fn_getXTitle(id)
fn_getXTitle
ALTER FUNCTION [dbo].[fn_getXTitle]
(
@id nVARCHAR(50)
)
RETURNS nVARCHAR (50) AS
BEGIN
declare @title nvarchar(50)
set @title =select b.titlename from tableB as b where b.xid =@id RETURN @title end
传入参数不同
--创建功能函数
create FUNCTION [dbo].[fn_getdatafromoldve]
(
@OLDVE nVARCHAR(50)
,@Type nVARCHAR(50)
)
RETURNS nVARCHAR (50)
AS
BEGIN
declare @BO_ID nvarchar(50)
declare @NEWVE nvarchar(50)
declare @PjtNO_X nvarchar(50) IF @TYPE ='M'
BEGIN
set @NEWVE =(select top 1 NEWVE from [XXXX].[dbo].[MIG_MAPPING1] where OLDVE =@OLDVE and FIELDNAME='PSPIX')
if @NEWVE is not null
begin
set @BO_ID =(select top 1 BO_ID from [XXXX].[dbo].[MIG_ORDER_BASE] WHERE ORDER_ID =@NEWVE)
if @BO_ID is not null
begin
RETURN @BO_ID
end
else
begin
RETURN @OLDVE
end end
else
begin
RETURN @OLDVE
end
END
IF @TYPE ='P'
BEGIN
set @NEWVE =(select top 1 NEWVE from [XXXX].[dbo].[MIG_MAPPING1] where OLDVE =@OLDVE and FIELDNAME ='PSPID')
if @NEWVE is not null
begin
RETURN @NEWVE
end
else
begin
RETURN @OLDVE
end END
IF @TYPE ='PX'
BEGIN
set @PjtNO_X =(select top 1 NEWVE from [XXXX].[dbo].[MIG_MAPPING1] where OLDVE =@OLDVE and FIELDNAME ='PSPIX') if @PjtNO_X is not null
begin
RETURN @PjtNO_X
end
else
begin
RETURN @OLDVE
end END RETURN @OLDVE
END
--执行的脚本
UPDATE [XXXX].[dbo].[tb_PrjMethod] set [PjtNo]=[dbo].[fn_getdatafromoldve](PjtNo,'P')
[SQL] MSSQL update 语句中的关联的更多相关文章
- UPDATE语句中SET部分列赋值的先后顺序有影响么?
昨天研发同事问我个问题,UPDATE语句中SET部分列赋值的先后顺序会影响结果么?以前没考虑过这个问题,因为通常我们都会UPDATE时给列赋予一个确定的值,而不是一个依赖于其他列的值. 测试环境: D ...
- 子查询在UPDATE 语句中的应用
在UPDATE语句中可以在更新列表中以及WHERE语句使用子查询.下面演示一个将图书的出版日期全部更新为所有图书中的最新出版日期,SQL语句如下: UPDATE T_Book SET FYearPub ...
- SQL Server UPDATE语句的用法详解
SQL Server UPDATE语句用于更新数据,下面就为您详细介绍SQL Server UPDATE语句语法方面的知识,希望可以让您对SQL Server UPDATE语句有更多的了解. 现实应用 ...
- SQL SERVER SELECT语句中加锁选项的详细说明
共享锁(读锁)和排他锁(写锁) 共享锁(S锁):共享 (S) 用于不更改或不更新数据的操作(只读操作),如 SELECT 语句. 如果事务T对数据A加上共享锁后,则其他事务只能对A再加共享锁,不能 ...
- Mybatis&orcale update语句中接收参数为对象
Mybatis的 mapper.xml 中 update 语句使用 if 标签判断对像属性是否为空值. UserDTO是传过来参数的类型,userDTO是在mapperDao接口中给更新方法的参数起的 ...
- SQL SERVER SELECT语句中加锁选项的详细说明 [转]
SQL Server提供了强大而完备的锁机制来帮助实现数据库系统的并发性和高性能.用户既能使用SQL Server的缺省设置也可以在select 语句中使用“加锁选项”来实现预期的效果. 本文介绍了S ...
- sql server update语句
update语句 --Update 语句用于修改表中的数据 语法:update 表名称 set 列名称 = 新值 where 列名称 = 某值 --更新某一行的若干列,set字句中用','隔开
- 使用PL/SQL能查询oracle中数据,在for update 语句中一直卡住
原因:在oracle中,执行了update或者insert语句后,都会要求commit,如果不commit却强制关闭连接,oracle就会将这条提交的记录锁住.下次就不能执行增删操作. 解决:1.查询 ...
- 【SQL】查询语句中in和exists的区别
in in可以分为三类: 一. 形如select * from t1 where f1 in ( &apos:a &apos:, &apos:b &apos:),应该和 ...
随机推荐
- ansible result.stdout.find('running') != -1 判断状态
[root@m01 ansible-playbook]# cat test_1103.yml ---- hosts: webserver tasks: - file: path=/tmp/{{ ...
- Ajax类
ajax.js -------------------------[ajax类]-------------------------- function Ajax(recvType){ var aj=n ...
- jQuery.Form插件介绍
一.前言 jQuery From插件是一个优秀的Ajax表单插件,使用它可以让你非常容易地.无侵入地升级HTML表单以支持Ajax.jQuery From有两个主要方法:ajaxForm和ajaxS ...
- jquery easyui datagrid 动态 加载列
实现方式: 首先根据输入的sql语句获得相关的列名称返回给前台,然后在datagrid中动态加载列,接着根据查询条件(包括sql语句)获取相关的记录返回给前台用于填充datagrid.从而实现类似or ...
- R语言进阶之4:数据整形(reshape)
一.通过重新构建数据进行整形 数据整形最直接的思路就把数据全部向量化,然后按要求用向量构建其他类型的数据.这样是不是会产生大量的中间变量.占用大量内存?没错.R语言的任何函数(包括赋值)操作都会有同样 ...
- WinInet 小例子
#include <windows.h> #include <wininet.h> #include <string> #include <iostream& ...
- (转)SCR, PCR, ESCR, PTS, DTS
1. SCR SCR是存在于PS中的,即PS的pack里面的一个field.他用来指定这个PS的pack期望的到达decoder的时间. 2. ESCR ESCR是位于PES里 ...
- DexClassLoader
DexClassLoader加载自己写的第三方jar包,例如金山毒霸需要加载ksremote.jar. 现在将DexClassLoader加载jar包成果分享一下. 1.新建Android工程,封 ...
- 云计算中auto-scaling 最早的来源
什么是弹性?首先,整合计算资源,将计算资源池化,通过虚拟机按需使用计算资源;其次,按量计费,让用户能够根据使用量按月按时甚至按秒来进行付费. 不过,光有了这两条还不够.为什么?我举个例子: 很多做运维 ...
- 动态调用WCF不添加服务(svcutil.exe)
记录下 首先用svcutil.exe把指定wcf接口的信息下载下来. 生成代理类 比如说接口地址为 http://localhost:6666/Service1.svc 以管理员身份打开cmd 执形 ...