位置: 编程技术 - 正文
面举一个例子来具体说明一下: 有两个表SourceTable为登陆表,TargetTable为授权表,如果访问用户在登陆表中,更新授权表的授权级别,否则授权0表示游客。sql语句如下: --SourceTable为登陆表,TargetTable为授权表 --如果访问用户在登陆表中,更新授权表的授权级别,否则授权0表示游客。 create table SourceTable(UserName nvarchar(),Pwd int,[Level] int) create table TargetTable(UserName nvarchar(),[Level] int) go --下面是SQL Server新增的赋值功能,更多新功能请参见 insert into SourceTable values('user1','',1),('user2','',2),('user3','',3) insert into TargetTable values('user1',1),('user2',2) 一般情况,我们会写如下的语句: 执行结果为UPDATE,表示执行了更新操作,也正是我们想要的。 但是如果我们把@UserName赋值为'user6',希望能在TargetTable中插入一条记录,但是实际执行结果为空,显示什么都没执行。原因就是using (select UserName,[Level] from SourceTable where UserName=@UserName) as sr(UserName,[Level]) on tg.UserName=sr.UserName这个语句中,sr结果集为空,所以merge语句就不向后执行了,不知道这是不是SQL Server的bug。 下面的SQL可以解决上面的问题:
推荐整理分享SQL Server使用Merge语句当源表数据集为空时,无法进行查询的问题(sqlalchemy merge),希望有所帮助,仅作参考,欢迎阅读内容。
文章相关热门搜索词:sql server使用sql server身份登录,sql的merge,SQL SERVER使用的是( )逻辑模型,sql server使用sql server身份登录,sql server使用sql server身份登录,SQL SERVER使用的是( )逻辑模型,sqlserver merge用法,SQL SERVER使用的是( )逻辑模型,内容如对您有帮助,希望把文章链接给更多的朋友!
SQLServer 批量插入数据的两种方法 运行下面的脚本,建立测试数据库和表值参数。--CreateDataBasecreatedatabaseBulkTestDB;gouseBulkTestDB;go--CreateTableCreatetableBulkTestTable(Idintprimarykey,UserNamenvarchar(),Pwd
SQLServer 通用的分区增加和删除的算法 首先是将一个数据表加入到分区表的方法:[dbo].[SP_Helper_Partition_Add]@SrcTablenvarchar(),待加入的表@DestTablenvarchar(),目标表@idxOnDestnvarchar(),目标表上的
数据库的一些常用知识 DROPVIEW--从数据库中删除视图CREATEINDEX--为数据库表创建一个索引DROPINDEX--从数据库中删除索引CREATEPROCEDURE--创建一个存储过程DROPPROCEDURE--从数据库中删除
标签: sqlalchemy merge
本文链接地址:https://www.jiuchutong.com/biancheng/349128.html 转载请保留说明!友情链接: 武汉网站建设