当前位置: 首页 > news >正文

网网站站建建设设网站开发用的工具

网网站站建建设设,网站开发用的工具,天蝎网站推广优化,网站建设要做些什么问题文章目录 一、发现问题二、场景1:在where条件中查询了修改表的数据三、场景2:在set语句中查询了修改表的数据 一、发现问题 在一次准备处理历史数据sql时,出现这么一个问题:You cant specify target table 表名 for update in FR…

文章目录

  • 一、发现问题
  • 二、场景1:在where条件中查询了修改表的数据
  • 三、场景2:在set语句中查询了修改表的数据

一、发现问题

在一次准备处理历史数据sql时,出现这么一个问题:You can't specify target table '表名' for update in FROM clause,大致的意思就是:不能在同一张表中先select再update。

在此进行一下复盘沉淀,使用测试sql复现当时的场景(mysql是8版本),准备测试数据:

CREATE TABLE `student` (`id` int NOT NULL,`name` varchar(255) DEFAULT NULL,`address` varchar(255) DEFAULT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;INSERT INTO `athena_opencourse`.`student`(`id`, `name`, `address`) VALUES (1, '张三', '北京');
INSERT INTO `athena_opencourse`.`student`(`id`, `name`, `address`) VALUES (2, '李四', '上海');

二、场景1:在where条件中查询了修改表的数据

update student set address = '杭州'
where id in (select id from student where name = '张三');delete from  student
where id in (select id from student where name = '张三');

此时会提示:1093 - You can’t specify target table ‘student’ for update in FROM clause

解决方式:在where子句中再加一层,使其成为临时表:

update student set address = '杭州'
where id in (select tmp.id from (select id from student where name = '张三') tmp);

三、场景2:在set语句中查询了修改表的数据

update student set address = (select address from student where name = '李四')
where name = '张三';

此时,一样的报错:> 1093 - You can’t specify target table ‘student’ for update in FROM clause

解决方式同上,查询时再加一层,使其成为临时表:

update student set address = (select tmp.address from (select address from student where name = '李四') tmp)
where name = '张三';

或者使用update join的方案:

update student s1 ,student s2 
set s1.address = s2.address
where s1.name = '张三' and s2.name = '李四';

惊呆了有木有!使用update join语法,可以很轻松的实现跨表的数据修改。

当然,上面的例子中,两个表之间的数据并没有关联关系,如果有关联关系的话,比如说同一个id更新相同的数据,可以使用left join on的语法:

update student s1 
left join student s2 on s1.id = s2.id
set s1.address = s2.name;

http://www.yayakq.cn/news/147888/

相关文章:

  • 企业网站推广最有效的方法深圳网站seo公司
  • 做网站需要注册商标是几类心悦会员荣誉战场两张免做卡网站
  • 学校网站建设源码网站开发广告怎么写
  • 如何设计网站的主菜单大良企业网站建设
  • 合肥有做网站的吗东莞手工活外发加工网
  • 北京网站系统开发尚品网站建设
  • 临时域名用于网站调试.net 网站 源代码
  • 珠海高端网站建设网站建设营改增
  • 以下哪个域名是做游戏网站的网站导航如何做半透明渐变
  • 网站网速慢网站切图规范
  • 广州做营销型网站建设关于网站建设的图片
  • 太原网站建设外包深圳服装设计学院
  • 个人备案能公司网站中牟网络推广公司
  • 定制网站建设服务商做推广效果哪个网站好
  • 宝安的医院网站建设免飞网站
  • 网站顶部小图标怎么做dreamviewer做网站
  • 外包网络推广公司推广网站个人网页制作教程与步骤
  • 西安电商网站制作wordpress不同分类文章不同模板
  • 凡科免费做网站莱芜做网站建设的公司
  • 重庆建设工程信息查询北京网站快速优化排名
  • 中国工程建设造价管理协会网站360路由器做网站
  • 深圳网站优化技巧廊坊网站制作网站
  • 做地方生活网站wordpress模板编辑
  • 怎么在网站后台做图片新闻成都广告公司简介
  • 网站建设与管理2018能用VUE做网站
  • 广东手机网站建设高平做网站
  • 注册网站的流程贸易公司网站案例
  • 如何找网站做推广wordpress很卡
  • 浏览器怎么设置不拦截任何网站装修公司加盟好还是自己开
  • 网站忧化工作怎么样网站建设的主要职责