当前位置: 首页 > 编程笔记 >

sql server的 update from 语句的深究

卫琛
2023-03-14
本文向大家介绍sql server的 update from 语句的深究,包括了sql server的 update from 语句的深究的使用技巧和注意事项,需要的朋友参考一下

一般来说update一个表, 使用where语句即可:


UPDATE Ttest SET

    statusInd = 'ACTIVE' 

WHERE

    id = 123

注意:

update 语句后面的table名称,是不可以启用别名的。
那么此时的id字段,就是来自Ttest表的(无可厚非)

但是,如果update,还有额外的join table 条件约束,语句如下:


UPDATE Ttest SET

    statusInd = 'ACTIVE'

FROM

    Tparent parent

WHERE

    Ttest.id = 123

AND Ttest.parentId = parent.id

AND parent.statusInd = 'ACTIVE'

注意:

update 后面的Ttest 不能使用别名
那么定位到,要修改的Ttest记录,就必须这样写:Ttest.id = 123

如果直接写id=123, 会分不清是 Ttest 表 还是 Tparent 表的  id
此sql语句的意思是,如果想修改自身的statusInd属性,得关联其parent的statusInd属性是否也是'ACTIVE'

此时,层级关系是使用两个表(Ttest和Tparent)来定义 。

但是如果,数据库表的设计,只是用一个表(Ttest),来表述数据之间的层级关系(Ttest.parentId = Ttest.id),
如何书写,可以实现目的呢?(如果想修改自身的statusInd属性,得关联其parent的statusInd属性是否也是'ACTIVE')

实现如下:


UPDATE Ttest SET

    statusInd = 'ACTIVE'

FROM

    Ttest parent,

    Ttest

WHERE

    Ttest.id = 123

AND Ttest.parentId = parent.id

AND parent.statusInd = 'ACTIVE'

解释:

其需求是:修改自身的statusInd属性,得关联其parent的statusInd属性是否也是'ACTIVE'
update 后面的表(Ttest)不能,命名别名!
from 后面的表 也是 Ttest,但是 要update的Ttest 记录 和 from Ttest 记录并不一样 (要update 孩子,但是要from 关联其父亲)

from 后面 要多写 一个 没有别名的 Ttest ,用来指定此表的记录,就是要被update的。
而需要from join的 (Ttest)表,就必须有一个别名,来区别与update的表(Ttest)

 类似资料:
  • 本文向大家介绍sqlserver中drop、truncate和delete语句的用法,包括了sqlserver中drop、truncate和delete语句的用法的使用技巧和注意事项,需要的朋友参考一下 虽然小编不建议大家去用命令删除数据库表中的东西,但是这些删除命令总有用的着的地方。 说到删除表数据的关键字,大家记得最多的可能就是delete了 然而我们做数据库开发,读取数据库数据.对另外的两兄

  • 问题内容: 我要插入具有自动递增键字段的SQLServer表。(我相信这在SQLServer中称为IDENTITY列。) 在Oracle中,我可以使用RETURNING关键字为INSERT语句提供一个类似于SELECT查询的结果集,该结果集将返回生成的值: 如何在SQLServer中完成此操作? 奖励 :好的,到目前为止,很好的答案,但是,如果可能的话,如何将其放入单个语句中?:) 问题答案: 通

  • 本文向大家介绍C#中foreach语句深入研究,包括了C#中foreach语句深入研究的使用技巧和注意事项,需要的朋友参考一下 1、概述 本文通过手动实现迭代器来了解foreach语句的本质。 2、使用foreach语句遍历集合 在C#中,使用foreach语句来遍历集合。foreach语句是微软提供的语法糖,使用它可以简化C#内置迭代器的使用复杂性。编译foreach语句,会生成调用GetEnu

  • 本文向大家介绍深入浅析JavaScript中with语句的理解,包括了深入浅析JavaScript中with语句的理解的使用技巧和注意事项,需要的朋友参考一下 JavaScript 有个 with 关键字, with 语句的原本用意是为逐级的对象访问提供命名空间式的速写方式. 也就是在指定的代码区域, 直接通过节点名称调用对象. with语句的作用是暂时改变作用域链、减少的重复输入。 其语法结构为

  • 我不太明白java中语句的定义。我在网上读了很多页,还有其他问题,但没有一个能给我一个准确的答案。 我们这里有多少陈述? 我想说,这是一个声明。然而,我们也可以这样写: 这是两个声明,对吗?

  • 这可能是一个非常愚蠢的问题,但我在其他任何地方都找不到答案,我已经看过了,但是我找不到与我的问题相关的答案。 问题: 在python中,不知道其他语言,每当我们调用一个内置类的if语句时,它会返回if语句解释的内容,例如, 如果为,则上述语句不会将任何内容打印为