精华内容
下载资源
问答
  • ='two') p ORDER BY p.CT 可以查出一些数据,现在我想把他作为一个子查询,对这个子查询结果以link分组,该怎么解决, 直接写的话会报Column 'q.serviceNo' is invalid in the select list because it is not ...
  • 案例情况:同事使用公司数据探查跑一段代码,部分代码如下,报错,显示不支持in内的子查询。#解决方式使用连接的方式实现子查询的功能SELECT t1.SIGN_CODE AS bus_src ,t1.ORGANIZATION_NO ,t1.loan_amts ,t1....

           案例情况:同事使用公司数据探查跑一段代码,部分代码如下,报错,显示不支持in内的子查询。但是直接用虚拟机去跑的话代码没有任何报错,也出结果,很奇怪。

    SELECT  t1.SIGN_CODE    AS bus_src
           ,t1.ORGANIZATION_NO
           ,t3.loan_amts
           ,t4.restSum
           ,NULL       AS c1
           ,NULL       AS c2
           ,NULL       AS c3
           ,t5.draft_cnt
           ,t5.draft_amt
           ,t5.draft_amt   AS draft_balance
           ,NULL       AS c4
    FROM    FDM_SOR.SOR_EVT_TBL_FB_CUST   t1
    where   t1.FB_CUST_CODE in (
    select  e.CUST_CODE from FDM_SOR.SOR_EVT_TBL_FB_CREDIT e where e.COMPANY_CODE='5103'
    )
    and t1.FB_CUST_CODE in (
    select  e.FB_CUST_CODE from FDM_SOR.SOR_EVT_TBL_FB_LOAN e where CURRENT_SETTLE_FLAG != 1     
    )

    百度了一下,说Hive对子查询的支持很有限。它只允许子查询出现在SELECT语句的FROM子句中。如果发现Hive不支持你写的子查询,可以看看能不能把它写成连接操作。例如,一个IN子查询可以写成一个半连接或连接。

    如下,使用join去替换in内的子查询

    SELECT   t1.SIGN_CODE    AS bus_src
            ,t1.ORGANIZATION_NO
            ,t1.loan_amts
            ,t1.restSum
            ,NULL       AS c1
            ,NULL       AS c2
            ,NULL       AS c3
            ,t1.draft_cnt
            ,t1.draft_amt
            ,t1.draft_amt   AS draft_balance
            ,NULL       AS c4
     FROM    FDM_SOR.SOR_EVT_TBL_FB_CUST   t1
    inner join( 
    select   e.CUST_CODE  as FB_CUST_CODE  from  FDM_SOR.SOR_EVT_TBL_FB_CREDIT e where e.COMPANY_CODE='5103'
    ) a11
    on  t1.FB_CUST_CODE = a11.FB_CUST_CODE
    inner join 
    (
    select   e.FB_CUST_CODE  from  FDM_SOR.SOR_EVT_TBL_FB_LOAN e where CURRENT_SETTLE_FLAG != 1      
    ) c11
    on  t1.FB_CUST_CODE = c11.FB_CUST_CODE
    但是,既然该子查询在虚拟机跑的通的话,那就说明hive肯定是支持in内的查询的,但是为什么用web界面的探查去跑会报错呢。于是查询了hive官网。在hive的官网,找到问题所在。原来hive在0.13版本以后开始支持更多的子查询,如in ,not in的子查询。如果我们用的hive不支持如in,exists,not in等子查询,很可能是0.13版本之前的旧版本。
    展开全文
  • Mysql对子查询的支持与优化不是很好   在使用过程中发现,mysql使用子查询时,一般速度都非常的慢,但是在mssql中视乎没有发现过这样的情况。   解决办法,改成jion连接的方式来执行,速度回变快很多。   ...

    Mysql对子查询的支持与优化不是很好

     

    在使用过程中发现,mysql使用子查询时,一般速度都非常的慢,但是在mssql中视乎没有发现过这样的情况。

     

    解决办法,改成jion连接的方式来执行,速度会变快很多。

     

    也可以参考这篇文章:

    http://www.cnblogs.com/xh831213/archive/2012/05/09/2491272.html

    展开全文
  • 根据子查询的类型和位置不同,mysql优化器会对查询语句中的子查询采取不同的处理策略,其中包括改写为连接(join),改写为半连接(semi-join)及进行物化处理等。 标量子查询(Scalar Subquery):查询语句中的标...


    根据子查询的类型和位置不同,mysql优化器会对查询语句中的子查询采取不同的处理策略,其中包括改写为连接(join),改写为半连接(semi-join)及进行物化处理等。

    1. 标量子查询(Scalar Subquery):查询语句中的标量子查询每次只返回一行数据,执行期间优化器能将其优化掉并对其进行缓冲处理。
    2. IN子查询(唯一)(IN Subquery(Unique)):查询语句中的子查询返回唯一数据集,因此,优化器可以将这种子查询安全的转换为内连接(inner join)进行处理。explain后执行show warnings应该可以看到这种场景的发生。
    3. IN子查询(非唯一)(IN Subquery(Non-Unique)):当查询语句中的子查询返回非唯一数据集时,此时,优化器并不能将子查询安全的转换为内连接,而只能采取其他的处理策略,例如:将子查询转换为半连接(Semi-join),而mysql中,执行半连接的策略包括FirstMatch,Materializelookup,Materializescan,DuplicatesWeedout,Loosescan等,每种策略的具体处理细节,大家可以参考相应文档,此处不再赘述。
    4. NOT IN子查询(NOT IN子查询):针对查询语句中的NOT IN子查询,mysql优化器可以采取物化处理和转化为exists两种策略。
    5. 驱动表(Derived Table):针对查询语句from子句中的子查询,mysql优化器并不会对其进行物化处理。而是通常对其进行合并处理(merge),其类似于视图将其定义与查询语句的谓词合并的方法。
    6. CTEs和视图(CTEs and Views):视图作为存储的查询,可以简化应用,也可以实现数据安全,而CTEs与视图类似,只是其生命期仅仅局限于相关查询语句本身。mysql优化器对CTEs和视图的处理,主要有两种策略,那就是合并处理(Merge)和物化处理(Materialize),针对CTEs和视图,mysql优化器首先尝试对其进行与主查询的合并,当某些场景导致其不能与住查询合并时,才会考虑通过将视图或CTEs结果通过临时表进行固化,以供主查询其他部分进行查询使用。这点explain后show warings可以看到这些场景的出现。
    展开全文
  • 查询出的所有的属性都是用association和collection去一一映射 后来在接触到懒加载,没有深刻理解 只改了resultMap中association和collection, 增加了select属性和column属性,而没有对原来的SQL语句进行改动。 但...

    1.以往的理解

    在还未有接触到懒加载时

    查询出的所有的属性都是用association和collection去一一映射

    image-20210520012545844

    后来在接触到懒加载,没有深刻理解

    只改了resultMap中association和collection,

    增加了select属性和column属性,而没有对原来的SQL语句进行改动。

    image-20210520013319949

    但这样的做法是错误的

    2.不妥之处

    2.1.多此一举

    在开启延迟加载后,就没有必要在SQL语句中联表了

    image-20210520013523743

    延迟加载开启后,相当于设置了一个按需开启的子查询

    在有需要的时候,就会进行查询,规则如下:

    1. 首先进行SQL语句中的主查询,有几条记录就会返回几个对象

    2. 其次对主查询出的每一条数据分别执行子查询,

    将会以column为参数,以select指定查询的语句

    2.2.数据返回错误

    由于子查询的规则,它是首先进行主查询,返回的对象数和记录数相等

    这样便会出现问题,期望返回一个对象,结果却返回了多个一模一样的对象。

    详细请见上篇文章:

    MyBatis | 05.多个collection同时开启延迟加载(使用select属性)时,数据无法正确封装

    3.正确的做法

    纠正之前的思维:在开启延迟加载后

    主SQL尽量不联表,关联的属性通过子查询获取

    image-20210520014616308

    展开全文
  • 案例情况:同事使用公司数据探查跑一段代码,部分代码如下,报错,显示不支持in内的子查询。但是直接用虚拟机去跑的话代码没有任何报错,也出结果,很奇怪。 SELECT t1.SIGN_CODE AS bus_src ,t1.ORGANIZATION_...
  • 通常情况下,需要把子查询优化成JOIN查询。 这是一个实现查询演员名为“sandra”的表演影片片名的SQL,通过EXPLAIN关键字进行解析,这个查询中包含三个子查询,并且出现了两次ALL全表扫描的查询,需要优化。 下面...
  • 查询部分查出来结果是这样的,一共两条结果 [img=https://img-bbs.csdn.net/upload/201702/25/1488034870_941895.png][/img] 如果把ORDER BY PROVINCE_NAME改成ORDER BY PROVINCE_NAME DESC就可以取到值 也...
  • 来自oracle 9i文档 《Advanced Replication》3-26[@more@]具有快速刷新特性的物化视图的子查询遵循的限制1 Materialized views must be primary key ma...
  • <set name="materialSuppliers" where="removed='FALSE'" table="materialSupplier" order-by="index" lazy="false" inverse="true"> <key> <column name="carelid" leng...
  • Oracle 子查询

    2018-09-03 20:18:59
    子查询注意的问题: 1、括号 2、合理的书写风格 3、可以在主查询的where select having from 后面使用子查询 (主查询select后面的子查询必须是单行...但在top-n分析问题中 必须对子查询排序 7、一般先执行子查询...
  • 带exists关键字的子查询

    千次阅读 2020-05-09 00:37:21
    使用关键字EXISTS构造子查询,系统对子查询进行运算以判断它是否返回结果集, 如果子查询的结果集不为空,则EXISTS返回的结果为TRUE,此时外层查询语句将 进行查询; 如果子查询的结果集为空,则EXISTS返回的结果为...
  • 查询和关联查询 效率

    万次阅读 2018-09-17 19:57:09
    MSDN对子查询的定义是这样的:  可以将一个查询的结果用作另一个查询的输入。可以将子查询的结果用作使用 IN( ) 函数、EXISTS 运算符或 FROM 子句的语句。  一条好的值得称赞的规则是尽量用连接代替所有的子查询...
  • 查询

    2019-09-28 02:47:00
    2.一般无需对子查询的结果进行排序 非相关子查询 子查询仅执行一次,子查询返回的结果集可以与父查询中每一行进行比较。 按返回结果划分 1. 单行单列子查询,通常与比较预算符=,>,<,!=,<=,>=...
  • 很多SQL Server程序员对子查询(subqueries)的使用感到困惑,尤其对于嵌套子查询(即子查询中包含一个子查询)。现在,就让我们追本溯源地探究这个问题。有两种子查询类型:标准和相关。标准子查询执行一次,结果...
  • 创建子查询 1.带in的子查询 使用in关键字进行子查询时,内层查询语句仅仅返回一个数据列,这个数据列中的值将提供给外层查询语句进行操作。...exists关键字后面的参数是一个任意的子查询,系统对子查询进行运算以判断
  • SQL 子查询 详细整理

    千次阅读 多人点赞 2020-05-17 10:53:33
    子查询分为两种: 非相关子查询(独立子查询) 相关子查询 ①独立子查询可以单独执行,所以先执行后,得到的 整个查询中子查询只执行一次,执行完后再执行...(2) 主查询对子查询结果的单行比较运算符有哪些? = > &g
  • Mongodb 对表数据的子查询计算不如关系数据库操作方便,但通过集算器 SPL 语言来实现就容易多了,不用再担心 Mongodb 对子查询的操作。若想了解更多,请前往乾学院:协助 mongodb 计算之子查询! Mongodb日常开发...
  • 关于SQL子查询

    2020-09-18 16:44:22
    子查询有一些关键词方便对子查询的结果进行比较(存在性检测子查询EXISTS,集合比较子查询IN、SOME、 ANY 和 ALL) 子查询可以当做主查询的列 关联子查询和非关联子查询的判断依据是子查询是否执行多次 下面以NBA...
  • 21-子查询

    2019-09-12 18:52:43
    子查询是一个查询语句会嵌套在另一个查询语句的内部的查询(MySQL4.1开始) 子查询的结果作为外层另一个查询的过滤条件 子查询常用的操作符: ...ANY/SOME是同义词,它们允许创建一个表达式对子查询的返...
  • postgresql子查询优化(提升子查询)

    千次阅读 2018-08-20 17:31:52
    问题背景 在开发项目过程中,客户要求使用gbase8s数据库(基于informix),简单的分页页面...在数据库实现早期,查询优化器对子查询一般采用嵌套执行的方式,即父查询中的每一行,都要执行一次子查询,这样子查询会执...
  • mysql子查询

    2019-05-08 09:40:49
    any 和some 表示满足其中任一条件,它们允许创建一个表达式对子查询的返回结果进行111比较,只要满足内层子查询中任何一个比较条件,就返回一个结果作为外层查询的条件, select o_id from concrete_class where o_...
  • MySQL| MySQL使用子查询

    2017-11-28 20:10:00
    1.MySQL 4.1引入了对子查询的支持.必须使用MySQL 4.1或更高级的版本. 2.能嵌套的子查询的数目没有限制,不过在实际使用时由于性能的限制,不能嵌套太多的子查询。 3.列必须匹配 在WHERE子句中使用子查询(如这里所示...
  • 数据库实验课堂实验 1.2数据查询 内容: 1)....:查询的目标表达式为所有列,指定列或指定列的运算。 :使用DISTINCT保留字消除重复性。...:通过实验验证对子查询的两个限制条件。 :体会相...
  • MSDN对子查询的定义是这样的: 可以将一个查询的结果用作另一个查询的输入。可以将子查询的结果用作使用 IN() 函数、EXISTS 运算符或 FROM 子句的语句。一条好的值得称赞的规则是尽量用连接代替所有的子查询。优化器...
  • 查询结果集重复利用

    千次阅读 2019-04-24 16:03:38
    1、MySQL中利用视图可实现对子查询结果集的重复利用: drop view if exists ali; create view ali as (select * from deal); select ali.Volume from ali; select ali.`P#` from ali; 2、SQLServer中利用With ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,689
精华内容 6,675
关键字:

对子查询