SQL Server update语句执行顺序

关于SQL Server update语句执行顺序

背景

写了一个触发器当As表插入数据时,As表的主表A表t字段将写入触发器中运算的数据。在触发器中写了一个临时表来储存运算数据,之后用Update语句更新到表A的t字段中。
在向临时表中储存数据的语句中我加入了where条件,而更新语句中没有加入where条件。最终导致符合where条件的数据被更新,不符合where条件的数据t字段数据被清空了。由此我猜测sql server在执行update语句时是先根据条件把相应字段的数据清空再写入数据

代码

最开始只有HAVING后面的条件,update语句没有where条件。

INSERT INTO #T1(cNo, cTonnage ,cDate )
	SELECT R1.cNo,SUM( cMouldWeight) cTonnage,R1.cDate FROM RH_LONGAPPLY R1 LEFT JOIN RH_LONGAPPLYS R2 
	ON R1.RH_LONGAPPLY_PK=R2.RH_LONGAPPLY_PK GROUP BY R1.cNo,R1.cDate HAVING cDate>=DATEADD(d,-1 ,GETDATE())
	
	DECLARE @count int=0,@count1 INT
	SELECT  @count1=count(cNo) FROM  #T1 
	WHILE(@count<=@count1)
	BEGIN
		UPDATE RH_LONGAPPLY
		SET cTonnage = B.cTonnage
		FROM RH_LONGAPPLY A LEFT JOIN #T1 B ON A.cNo=B.cNo
		WHERE A.cDate>=DATEADD(d,-1 ,GETDATE())		
		SET @count=@count+1
	END  
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQL Server 是一种关系型数据库管理系统,用于存储和管理数据。在实际应用中,我们经常需要使用复杂的 SQL 语句来操作数据库,本文将简要介绍一些常见的 SQL Server 数据库复杂语句操作。 1. 子查询:可以在一个 SQL 查询中嵌套另一个查询,用于获取更精确的数据结果。例如,可以使用子查询来查找销售额最高的产品。 2. 联结:联结(JOIN)操作用于将多个表中的数据关联起来。常见的联结类型包括内联结(INNER JOIN)、左联结(LEFT JOIN)和右联结(RIGHT JOIN)。通过联结操作,我们可以根据不同的关联条件从多个表中检索出所需的数据。 3. 分组和聚合函数:使用分组和聚合函数,我们可以对数据库的数据进行分组和统计。常见的聚合函数包括 COUNT、SUM、AVG、MAX 和 MIN。例如,我们可以使用分组和聚合函数来计算每个销售人员的总销售额。 4. 排序:使用排序操作可以按照指定的顺序对数据进行排序。常见的排序操作包括升序(ASC)和降序(DESC)。我们可以按照指定的列对数据进行排序,也可以对多列进行排序。 5. 条件查询:使用条件查询可以根据指定的条件从数据库中检索数据。常见的条件运算符包括等于(=)、大于(>)、小于(<)和逻辑运算符(AND、OR、NOT)。通过条件查询,我们可以筛选出符合特定条件的数据。 6. 更新和删除:使用 UPDATE 和 DELETE 语句可以更新和删除数据库中的数据。通过指定更新或删除的条件,我们可以修改或删除满足条件的数据。 以上是一些常见的 SQL Server 数据库复杂语句操作,熟练掌握这些操作可以提高数据库查询和数据处理的效率。同时,根据实际需求,我们可以结合不同的操作来实现更复杂的数据库操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值