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

网站建设怎么做分录营销网站建设流程

网站建设怎么做分录,营销网站建设流程,兰州网络推广昔年下拉博客,做自己的第一个网站某天,正按照业务的要求删除不需要的数据,在执行 DELETE 语句时,竟然出现了报错! 作者:林靖华,开源数据库技术爱好者,擅长MySQL和Redis的运维 爱可生开源社区出品,原创内容未经授权不…

某天,正按照业务的要求删除不需要的数据,在执行 DELETE 语句时,竟然出现了报错!

作者:林靖华,开源数据库技术爱好者,擅长MySQL和Redis的运维

爱可生开源社区出品,原创内容未经授权不得随意使用,转载请联系小编并注明来源。

本文约 650 字,预计阅读需要 2 分钟。

背景

某天,正按照业务的要求删除不需要的数据,在执行 DELETE 语句时,竟然出现了报错(MySQL 数据库版本 5.7.34):

mysql> delete from test1 t1 where not exists (select 1 from test2 t2 where t1.id=t2.id);
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 't1 where not exists (select 1 from test2 t2 where t1.id=t2.id)' at line 1

这就有点奇怪了,因为我在执行删除语句之前,执行过同样条件的 SELECT 语句,只是把其中的 select * 换成了 delete 而已,毕竟这个语法的报错一般来说原因很大可能是 关键字拼写错误 或者 存在中文符号

排除了上面的原因后,再从语句本身的逻辑来排查,难道说 DELETE 语句不支持 not exists 这种写法?好像之前也没听说过这个限制。我们还是以语法错误这个原因为起点,去查查官方文档看下能不能找出答案。

分析

DELETE 的语法如下:

5.7 单表删除格式

DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name[PARTITION (partition_name [, partition_name] ...)][WHERE where_condition][ORDER BY ...][LIMIT row_count]

仔细对比了以下,发现了一些端倪,这里的语法并没有写出表名的别名用法,难道是使用了别名的原因?

mysql> delete from test1 where not exists (select 1 from test2 where test1.id=test2.id);
Query OK, 1 row affected (0.00 sec)

经测试去掉了别名还真的执行成功了,但我印象中之前删除数据的时候用过别名,于是我再继续深挖文档查查看。

对比不同地方和不同版本的格式差异后,我终于明白了问题的起因。在不同版本,甚至不同情况下都有差异。

8.0 单表删除格式

DELETE [LOW_PRIORITY] [QUICK] [IGNORE] FROM tbl_name [[AS] tbl_alias][PARTITION (partition_name [, partition_name] ...)][WHERE where_condition][ORDER BY ...][LIMIT row_count]

5.7 和 8.0 多表删除格式

DELETE [LOW_PRIORITY] [QUICK] [IGNORE]tbl_name[.*] [, tbl_name[.*]] ...FROM table_references[WHERE where_condition]DELETE [LOW_PRIORITY] [QUICK] [IGNORE]FROM tbl_name[.*] [, tbl_name[.*]] ...USING table_references[WHERE where_condition]

经过上面语法对比的不同发现,5.7 的单表删除确实不支持别名的使用,但是多表删除却支持(table_references 里包含别名的使用)。

并且在 8.0.16 开始,单表删除已经支持使用别名了。

For consistency with the SQL standard and other RDBMS, table aliases are now supported in single-table as well as multi-table DELETE statements. (Bug #27455809)

结论

  • MySQL 5.7 使用单表删除语句时,不能使用别名,多表删除可以使用别名。
  • MySQL 8.0.16 开始单表多表都可以使用别名。

更多技术文章,请访问:https://opensource.actionsky.com/

关于 SQLE

SQLE 是一款全方位的 SQL 质量管理平台,覆盖开发至生产环境的 SQL 审核和管理。支持主流的开源、商业、国产数据库,为开发和运维提供流程自动化能力,提升上线效率,提高数据质量。

SQLE 获取

类型地址
版本库https://github.com/actiontech/sqle
文档https://actiontech.github.io/sqle-docs/
发布信息https://github.com/actiontech/sqle/releases
数据审核插件开发文档https://actiontech.github.io/sqle-docs/docs/dev-manual/plugins/howtouse
http://www.dt0577.cn/news/18603.html

相关文章:

  • 做动车哪个网站查五种常用的网站推广方法
  • 张店网站建设哪家好百度权重查询爱站网
  • wordpress当前菜单山西免费网站关键词优化排名
  • 做信息图的网站有哪些色盲测试图
  • 网站制作 视频搜索引擎排名机制
  • 海报设计培训seo怎么优化方法
  • 什么网站比谷歌还好百度客服中心人工电话
  • 兰山网站建设百度竞价推广自己可以做吗
  • 增城网站定制开发公司注册网站怎么注册
  • 网站建设kaicz视频号排名优化帝搜软件
  • 慢慢网站建设乔拓云网站注册
  • 做购物网站适合的服务器互联网项目推广平台有哪些
  • 做公众号编辑用什么网站百度竞价排名推广
  • 东营 微信网站建设谷歌竞价广告
  • 有没有专门做游戏人物的绅士视频网站成都关键词排名系统
  • 西宁做网站最好的公司营销网络是什么意思
  • 网站怎么做的有创意网络营销环境分析主要包括
  • 网站后台如何用代码上传视频百度手机点击排名工具
  • 专做医药中间体的网站关键词如何确定
  • 做搜狗网站优发帖推广平台
  • 网站未备案职业培训网络平台
  • wordpress 4.7.3 慢seo论坛
  • 营销网站建站企业搜索指数
  • dedecms 做微网站seo查询官网
  • 网站正在建设中 页面搭建一个网站
  • 2022年没封网站直接进入苏州seo建站
  • 苹果软件 做ppt模板下载网站有哪些内容免费招聘信息发布平台
  • 网站gzip压缩百度推广和百度竞价有什么区别
  • 网站建设咨询问卷app开发需要多少费用
  • 常州企业网站建设价格营销软文范文200字