在SQL中,经常用到关联查询,比如select a.* from A a inner join B b on a.PId=b.FId where 条件,SQL中也支持类似的关联更新和关联删除。

关联更新语法:

update a set a.字段=” from A a inner join B b on a.PId=b.FId where 条件

关联删除语法:

delete from a from A a inner join B b on a.PId=b.FId where 条件

注解:A,B为表名,a.PId为A表的主键,B.FId为B表的外键,关联A表

通过上面的语法,可以发现from 后面是一样的。

下面是我写的一个小例子。

建立两个表:用户表 User和博客表 Blog,如下图所示:

执行以下脚本插入测试数据:

insert into [User](UserName,[Password],Memo) values (‘张三’,’123456′,”)
insert into [User](UserName,[Password],Memo) values (‘李四’,’123456′,”)
insert into [User](UserName,[Password],Memo) values (‘王五’,’123456′,”)

insert into Blog(Title,UserId) values (‘标题1′,1)
insert into Blog(Title,UserId) values (‘标题2′,2)
insert into Blog(Title,UserId) values (‘标题3′,3)
insert into Blog(Title,UserId) values (‘标题4′,3)
insert into Blog(Title,UserId) values (‘标题5′,3)

执行更新操作:

将发表了博客标题为“标题1”的用户的备注设置为”发表了一篇名为(标题1)博客的用户”,SQL如下:

update u set u.Memo=’发表了一篇名为(标题1)博客的用户’ from [User] u
inner join Blog b on u.UserId=b.UserId where b.Title=’标题1′

执行删除操作:

删除UserId为3的用户发表的所有博客,SQL如下:

delete from b from Blog b inner join [User] u on u.UserId=b.UserId where u.UserId=3

上面的关联删除可以直接写成delete from Blog where UserId=3,这里只做演示用。

SQL中的关联更新和关联删除相关推荐

  1. 在Linq to Sql中管理并发更新时的冲突(3):使用记录的时间戳进行检测

    我们描述了Linq to Sql检测在更新时是否产生了冲突的基本方法:将该记录每个字段原来的值和更新时的值进行对比,如果稍有不同则意味着记录被修改过,因此产生了更新冲突.不过您是否有这样的感觉,这种方 ...

  2. 在Hibernate中处理批量更新和批量删除

    批量更新是指在一个事务中更新大批量数据,批量删除是指在一个事务中删除大批量数据.以下程序直接通过Hibernate API批量更新CUSTOMERS表中年龄大于零的所有记录的AGE字段: 如果CUST ...

  3. SQL中重复数据的查询与删除

    ========第一篇========= 在一张表中某个字段下面有重复记录,有很多方法,但是有一个方法,是比较高效的,如下语句: select data_guid from adam_entity_d ...

  4. SQL中数据的更新查询

    (一)数据更新 首先先建立一个表再进行数据的更新 插入一个新学生元组 插入一个学生的信息 此处应注意所插入的值要与属性列对应,否则会出现数据类型不匹配的错误 插入选课记录 此处应注意是否有外键约束,如 ...

  5. SQL中EXISTS理解使用

    SQL中EXISTS的理解使用 关联子查询 EXISTS理解使用 关联子查询 在讲述EXISTS用法之前,先讲述一下关联子查询: 关联子查询:是指在内查询中需要借助于外查询,而外查询离不开内查询的执行 ...

  6. winform代码:关联窗体数据更新,删除dataGridview中选中的一行或多行

    一.关联窗体数据更新 关联窗体数据修改时,如果一个为总体数据显示窗体A,另一个为详细修改窗体B,从A进入B,在B中对数据进行修改,然后返回A,这时A窗体的数据需要更新. 我采用最简单的方法,首先保证每 ...

  7. Oracle\MS SQL Server的数据库多表关联更新UPDATE与多表更新

    一条Update更新语句是不能更新多张表的,除非使用触发器隐含更新.而表的更新操作中,在很多情况下需要在表达式中引用要更新的表以外的数据.我们先来讨论根据其他表数据更新你要更新的表 一.MS    S ...

  8. Bootstrap4+MySQL前后端综合实训-Day08-AM【多表查询sql语句、关联数据的假删除、自动增长主键的获取、栏目管理“数据编辑”按钮的实现】

    [Bootstrap4前端框架+MySQL数据库]前后端综合实训[10天课程 博客汇总表 详细笔记][附:实训所有代码] 目   录 多表查询sql语句 关联数据的假删除(status状态码/数据可恢 ...

  9. 表的插入、更新、删除、合并操作_12_通过表关联更新表

    通过表关联更新表 需求描述 需求:更新emp表里的sal字段的值为temp表里的sal乘以1.5,这些员工号同时出现在在temp表中. 解决方法:这里通过UPDATE TableName SET Co ...

最新文章

  1. ACL 2021 最佳论文:最优运输理论开启词表学习新纪元
  2. 【C++】17. map []操作符、insert()、emplace()
  3. 计算机临床医学自动化哪个好,大学专业难度排行前十名,临床医学位列第二
  4. [转]如何在.NET MVC中使用jQuery并返回JSON数据
  5. 【转】Dynamics 365中开发和注册插件介绍
  6. 王传福凭啥“抛弃”燃油车?
  7. android学习笔记---39_采用Service实现电话监控器,刻录打电话者的声音后通过socket上传到服务端
  8. 小窍门-在EXECL表中加入下拉列表
  9. 大数据-数据抽取(数据降维)算法
  10. 可浮动的在线qq咨询客服代码
  11. 为WIN7原生2019版ISO更改为中文
  12. 统计学权威盘点过去50年最重要的统计学思想,因果推理、bootstrap等上榜,Judea Pearl点赞
  13. aliddns ipv6_python脚本实现ipv6的ddns功能
  14. Audacious实现cue、ape音乐支持,GBK支持、cue乱码完美解决
  15. 谷歌中国3月28日发年终奖 不少员工将选择离职【转载】
  16. JAVA输出一个3行4列数组_输入一个3行4列的数组,先以3行4列的格式输出该数组
  17. 计算机可以计算出十的一百次方吗,世界上最大的数字单位 古戈尔(1古戈尔等于10的100次方)...
  18. mysql中vlookup函数_vlookup函数用法示例,如何使用vlookup函数
  19. swap函数中的交换 【指针】 学习笔记
  20. 计划模拟--实现生产计划最佳的方法

热门文章

  1. 引发热议的AI翻译歧视,是理所应当的事么?
  2. Android -- Messenger与Service
  3. Javascript的数据结构与算法(一)
  4. 《C++ primer》--第1,2章小结
  5. 常用javascript函数
  6. Thinkpad SL400 issue
  7. [IE技巧] 如何让IE 启动的时候不加载任何插件
  8. 在Apache的POI XWPFRun对象分隔文本行
  9. springboot 启动的时候报错 Error creating bean with name 'solrClient'
  10. eclipse安装JAVA反编译插件