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

创建视图提示:View‘s SELECT contains a subquery in the FROM clause.

创建视图提示:View’s SELECT contains a subquery in the FROM clause.

mysql、view、select、subquery

背景

  • 环境版本:mysql 5.6.46
  • 业务场景:甲方要求提供一个查询视图,字段比较多,处理逻辑也比较复杂,什么分组、子查询、排序、多表连接都用上了

问题描述

  • 现象

创建视图的语句大概是这样(查询语句从网上扒的,以免泄密):

create definer = root@`%` view a_view as
SELECT c.scan_man AS scan_man, c.DOC_ID AS DOC_ID, c.db_time arrive_time, d.db_time assign_time
FROM (SELECT DOC_ID AS DOC_ID, DB_TIME AS db_time, SCAN_MAN AS scan_man FROM test WHERE SCAN_TYPE = 13) cLEFT JOIN (SELECT DOC_ID AS DOC_ID, DB_TIME AS db_timeFROM testWHERE SCAN_TYPE = 10) dON c.DOC_ID = d.DOC_ID
GROUP BY c.DOC_ID, c.scan_man;

不加 create view 的时候,单独执行select语句一切正常,数据也没问题

  • 开发及调测工具信息

加上create view语句,在idea的数据库console文件里执行(和select一样的执行方式),下面的services窗口却提示:View's SELECT contains a subquery in the FROM clause.

原因分析

  • 经验之谈:一看这英文不是说的什么子查询吗,有子查询有什么问题吗,单纯select也没什么问题啊?而且这是说的select字段中的子句,还是说的where还是说的join?不明白指的是哪里;
  • 周边见解:我写一半的时候有人和我说,我原来的写法太费事(所有关联操作都放在了where里),建议我直接在select的字段处写,我当时虽然非常怀疑这个性能,但还是照做了;
  • 网络搜索:找到一篇博客
    ,原来说的是where里不能有子查询(就是上边SQL的括号里的部分)。

解决方案

  1. 逐个从where中删除子查询
  2. 在select中的相应字段重写查询关联逻辑

声明:本文使用八爪鱼rpa工具从gitee自动搬运本人原创(或摘录,会备注出处)博客,如版式错乱请评论私信,如情况紧急或久未回复请致邮 xkm.0jiejie0@qq.com 并备注原委;引用本人笔记的链接正常情况下均可访问,如打不开请查看该链接末尾的笔记标题(右击链接文本,点击 复制链接地址,在文本编辑工具粘贴查看,也可在搜索框粘贴后直接编辑然后搜索),在本人博客手动搜索该标题即可;如遇任何问题,或有更佳方案,欢迎与我沟通!


http://www.mrgr.cn/news/40340.html

相关文章:

  • 华为OD机试真题-荒岛逃生游戏-2024年OD统一考试(E卷)
  • 025.Oracle_DBMS_job定时任务
  • Java之线程篇七
  • 问:JAVA阻塞队列实现类及最佳实践?
  • 数据库 - Redis数据库
  • 如何实现多套环境的自动化测试?
  • 使用Jmeter进行http接口性能测试
  • 2024年9月总结及随笔之丢卡
  • Divide Rows and Conquer Cells: Towards Structure Recognition for Large Table
  • Debezium日常分享系列之:Debezium 3.0.0.CR2发布
  • JMeter 性能测试基本过程及示例
  • 开发平台 开放平台 集成平台 配置平台的区别
  • Java服务端数据库连接:连接池的资源优化
  • python itertools模块介绍
  • lambda表达式底层实现:反编译LambdaMetafactory + 转储dump + 运行过程 + 反汇编 + 动态指令invokedynamic
  • ICM20948 DMP代码详解(53)
  • 前端规范工程-5:Git提交信息规范(commitlint + czg)
  • 问:JAVA中阻塞队列的概念、原理及使用场景?
  • 基于JAVA Web的校园快递代领系统设计与实现(源码+定制+文档)
  • SSM私人诊所管理系统—计算机毕业设计源码36406