精华内容
下载资源
问答
  • LEFT JOIN子查询

    千次阅读 2011-09-26 17:29:50
    2:LEFT JOIN ON子查询 LEFT JOIN(SELECT * FROM mobileuser ORDER BY id DESC)AS m ON 如果右边表符合条件的记录有两个,则取ID最大的那个 3:GROUP_CONCAT(d.lessonName)......GROUP BY d.mac根据d.mac进行...
    SELECT m.phoneNumber,m.course,m.source,m.mobileArea,m.age,m.sex,m.regTime,d.mac, GROUP_CONCAT(d.lessonName) AS lname
    FROM downloadrecord d LEFT JOIN(SELECT * FROM mobileuser ORDER BY id DESC)AS m ON d.mac=m.mac  
    AND d.mac='8C-7B-9D-F0-6A-3D' GROUP BY d.mac
    

    1:LEFT JOIN ON
    左连接,将左边表所有记录全部列出,如果右边表对应的记录有值则将记录值列举出来
    2:LEFT JOIN ON子查询
    
    LEFT JOIN(SELECT * FROM mobileuser ORDER BY id DESC)AS m ON
    如果右边表符合条件的记录有两个,则取ID最大的那个
    3:GROUP_CONCAT(d.lessonName)......GROUP BY d.mac根据d.mac进行组合查询,同事对lessonName字段进行连接显示为一个字段lname
    
    
    展开全文
  • ps:解释下 对于Mysql中的语句,牵扯到左查询时 可以用left join关联 但一般对于不知道什么时候起别名 什么时候用括号的老铁们 真实头疼 所以发个模板 剩下的根据自己的业务具体实施。
    不多说 直接上语句  
    SELECT
        a.id,
        a.thumbNail,
        a. NAME,
        a.marketPrice,
        a.memberPrice,
        a.personName,
        a. STATUS,
        a.recieveOrderDate,
        a.trackNumber,
        a.contact,
        a.reportSendDate,
        b.trackNumber,
        a.reportDownloadPath
    FROM
        (
            SELECT
                od.id,
                ps.thumbNail,
                ps. NAME,
                od.marketPrice,
                od.memberPrice,
                od.personName,
                od. STATUS,
                od.recieveOrderDate,
                ol.trackNumber,
                ol.contact,
                od.reportSendDate,
                od.reportSendOrderLogisticId,
                od.reportDownloadPath
            FROM
                orders.order_detail od
            LEFT JOIN orders.order_logistics ol ON od.recieveOrderLogisticId = ol.id
            LEFT JOIN orders.product_snapshot ps ON od.productSnapShotId = ps.id
            WHERE
                od.valid = TRUE
            AND ol.valid = TRUE
            AND od.orderId =?
        ) a
    LEFT JOIN (
        SELECT
            ol.trackNumber,
            od.id
        FROM
            orders.order_detail od
        LEFT JOIN orders.order_logistics ol ON od.reportSendOrderLogisticId = ol.id
        WHERE
            od.valid = TRUE
        AND ol.valid = TRUE
        AND od.orderId =?
    ) b ON a.id = b.id
     
     
    ps:解释下 对于Mysql中的语句,牵扯到左查询时  可以用left join关联  但一般对于不知道什么时候起别名 什么时候用括号的老铁们 真实头疼  所以发个模板 剩下的根据自己的业务具体实施。
    展开全文
  • 关于Mysql left join子查询

    千次阅读 2018-09-21 12:03:34
     今天在做一个项目的时候需要关联查询,但是好奇想知道left join子查询哪一个比较合适。 于是做了个实验。  子查询:  SELECT a.*,(select content from yxhy_news_content where yxhy_news_content.id=a.id...

    背景:

     今天在做一个项目的时候需要关联查询,但是好奇想知道left join 和子查询哪一个比较合适。

    于是做了个实验。

     子查询:
       SELECT a.*,(select content from yxhy_news_content  where
    yxhy_news_content.id=a.id) as content FROM `yxhy_news` `a` WHERE  `a`.`id` = '47'
    LIMIT 1    

    查询时间为0.735

     

    LEFT JOIN查询
    select * from yxhy_news a LEFT JOIN yxhy_news_content b on b.id=a.id where a.id=47;
    查询时间为0.188S

     

    很明显,LEFT JOIN 要比子查询效率高。其原因是子表的ID是没有添加索引的。

    在yxhy_news_content这个子表添加主键索引后实验结果如下。

    LEFT JOIN查询结果:

    select * from yxhy_news a LEFT JOIN yxhy_news_content b on b.id=a.id where a.id=61

    时间为:0.055s

     

    子查询结果:

    SELECT a.*,(select content from yxhy_news_content  where 

    yxhy_news_content.id=a.id) as content FROM `yxhy_news` `a` WHERE  `a`.`id` = 61 

    LIMIT 1

    时间: 0.046s

     

    很明显子查询效果要比LEFT JOIN效率要高,但是还是不建议在FROM之前使用子查询。即使是有主键的情况下也不要这么使用。

     

    100万数据表未建索引的情况下,连接会比用子查询快几倍,建索引后两种查询性能差不多。

    展开全文
  • left join子查询

    2015-06-25 15:55:14
    [code="sql"... (select name from wp_teacher wt inner join wp_teacher_class wts on wt.teacherid = wts.teacherid where wts.classid = kcs.classid and wts.headmaster = 1 limit...
    select * from (  select
    (select name from wp_teacher wt inner join wp_teacher_class wts on wt.teacherid = wts.teacherid where wts.classid = kcs.classid and wts.headmaster = 1 limit 1) AS teachername,
    (select wt.teacherid from wp_teacher wt inner join wp_teacher_class wts on wt.teacherid = wts.teacherid where wts.classid = kcs.classid and wts.headmaster = 1 limit 1) AS teacherid,
    (select name from wp_student ws where ws.studentid= kcs.studentid limit 1) AS studentname,
    (select name from wp_keeper wk where wk.keeperid = kcs.keeperid limit 1) AS user,
    (select mobile from wp_keeper wk where wk.keeperid = kcs.keeperid limit 1) AS usermobile,
    (select title from wp_classes wcs where wcs.classid = kcs.classid limit 1) AS classname,
    wc.id AS id,
    wc.cardid AS cardid,
    wc.schoolid AS schoolid,
    wc.type AS type,
    wc.status AS status,
    wc.fuid AS fuid,
    wc.returnid AS returnid,
    kcs.ismain AS ismain,
    kcs.keeperid AS keeperid,
    kcs.studentid AS studentid,
    kcs.relation AS relation,
    kcs.classid AS classid,
    kcs.issendsms AS issendsms,
    kcs.returnid AS kcsreturnid from
    ( select * from wp_card order by cardid asc limit 10,10 ) as wc left join wp_keeper_card_student kcs on wc.cardid = kcs.cardid order by cardid ) as ok;



    [img]http://dl2.iteye.com/upload/attachment/0109/7590/e36b2bb0-1e7f-3e30-b961-e50e5b6d3cb1.jpg[/img]


    select * from (
    select

    wc.id AS id,
    wc.cardid AS cardid,
    wc.schoolid AS schoolid,
    wc.type AS type,
    wc.status AS status,
    wc.fuid AS fuid,
    wc.returnid AS returnid,

    wk.name AS user,
    wk.mobile AS usermobile,
    ws.name AS studentname,
    wca.title AS classname,

    wt.name AS teachername,
    wt.teacherid AS teacherid,

    kcs.ismain AS ismain,
    kcs.keeperid AS keeperid,
    kcs.studentid AS studentid,
    kcs.relation AS relation,
    kcs.classid AS classid,
    kcs.issendsms AS issendsms,
    kcs.returnid AS kcsreturnid
    from
    ( select * from wp_card order by cardid asc limit 10,10 ) as wc
    left join wp_keeper_card_student kcs on(wc.cardid = kcs.cardid)
    left join wp_keeper wk on wk.keeperid = kcs.keeperid
    left join wp_classes wca on wca.classid = kcs.classid
    left join wp_student ws on ws.studentid = kcs.studentid
    left join wp_teacher_class wts on (wts.classid = kcs.classid and wts.headmaster = 1 )
    left join wp_teacher wt on wt.teacherid = wts.teacherid
    ) ok ;



    [img]http://dl2.iteye.com/upload/attachment/0109/7592/107dfcfe-6ca8-3491-a0c1-07837bbd8470.png[/img]


    每个表都有 50-100万的数据。
    看来,效率差不多。
    展开全文
  • MySQL从4.1版本开始支持子查询,使用子查询进行SELECT语句嵌套查询,可以一次完成很多逻辑上需要多个步骤才能完成的SQL操作。...优化方式:可以使用JOINLEFT JOIN等方式代替子查询,这些方式不...
  • 比较情况1:left joinjoin的比较 ...上述业务需求即查询A,B,C三个表交集为结果集,这种情形应该join的效率优于left join,因为left join 两表之间不会自动选择小表驱动大表但是inner join 会自动选择。 比
  • select a.*,b.dept_name from user a left join dept b on a.dept_id=b.dept_id 2. select a.*, (select dept_name from dept where dept_id=a.dept_id) dept_name from user a 一般哪个比较好啊? 效率...
  • SQL子查询LEFT JOIN 关键字

    千次阅读 2019-05-20 17:36:15
    SQL子查询 语法: sno in (SELECT sno FROM p_test WHERE category =“800米” ) WHERE category=“立定跳远” and sno in (SELECT sno FROM p_test WHERE category =“800米” ) 上述语句的意思就是2个条件,类型是...
  • mysql中 对多表的查询有两种方式:表连接,子查询 表连接 是对 多张表 做笛卡尔积,生成临时表,消耗内存 子查询分步的单表查询(in, exists) 表连接时 根据 on 后面的条件做关联 生成临时表后 通过where条件再次...
  • 最近遇到一个查询比较慢的sql语句,用了子查询,大概需要0.8秒左右,这个消耗时间比较长,严重影响了性能,所以需要进行优化。单独查询单表或者子查询记录都很快,下面来看看详细的介绍。 开启profile mysql> show...
  • 子查询LEFT JOIN的组合使用

    千次阅读 2020-11-27 14:43:50
    BONUS )b ON b.EMPNO=a.EMPNO 不理解的话,可以从子查询多试几次,大体结构是内层查询+外层查询组成的子查询LEFT JOIN的组合 使用如下sql也能达成目的 select e.ename,e.EMPNO, e.deptno, d.loc,eb.received from ...
  • left semi joinjoin实现子查询性能对比 left semi join hive从 0.13 版本实现了in/exist自查询,实现方式是通过left semi joinleft semi jion具体实现是在右表(子查询)中先对on的关键字做group by ,然后再...
  • MySQL从4.1版本开始支持子查询,使用子查询进行SELECT语句嵌套查询,可以一次完成很多逻辑上需要多个步骤才能完成的SQL操作。子查询虽然很灵活,但是执行效率并不高。那么问题来了,什么是子查询?为什么它的效率不...
  • 网上说大数据 Left Join子查询 效率高,但是如果经过分页以后,哪个效率更高呢? 假设有若干个表(3个表以上),主表数据量很大,主表跟子表都有主键对应,现在需要做一个分页,每页显示20条记录。以后数据越...
  • 采用子查询left join更快

    千次阅读 2019-11-14 16:37:14
    select * from repair_plant where id in (select repair_id from repair_key_parts where part_id = ? ) and id !=? and state =1 ;,14,0
  • 注意:left join的第二张表,有多条数据,只取符合条件的一条(本例中取出actn_numb最大的一条记录)。   基础数据准备: create table A(  id number primary key,  act varchar2(100) ); create table ...
  • Mysql创建视图 默认是不支持子查询 需要改变下方式 1.创建简单视图 CREATE VIEW v_user_role AS SELECT ur.user_id , ur.role_id FROM t_user_role ur 2.创建关联性视图 错误的创建方法: CREATE VIEW v_user_role ...
  • 有一个查询比较慢的sql语句,用了子查询,大概需要0.8秒左右,这个消耗时间比较长,严重影响了性能,所以需要进行优化。单独查询单表或者子查询记录都很快, 开启profile mysql> show profiles; -- 查看是否...
  • 一个小的知识点。工作中碰到了,记录如下。之前的多表关联查询用法如下:p1=cb.equal(root.jion("...查看源码得知而JoinType是一个枚举,源码如下:看到现在你应该知道了left join如何应用了,如果还不知...
  • 1、left join测试示例 SELECT a.id, a.create_name, a.create_time, b.id as bId, b.charge...主表和表通过LEFT JOIN 关联后,主表以重复的方式对应多条右表记录。 2、实现主表与表一对一对应。 2.1使用group..
  • 关于hive 子查询、union 、left join

    千次阅读 2017-07-09 11:21:40
    3. 子查询中使用union all 时,在子查询里不能使用count、sum 等 聚合函数  4. 两表直接进行union all 可以使用count、sum 等聚合函数  5. 两张表进行union all 取相同的字段名称,可正常输出指定数据内容...
  • SQL update left join查询

    千次阅读 2020-08-01 20:12:41
    对于有的更新语句,要更新的表可能条件不够,需要用到left join关联其他表, 但是不能直接关联,否则报错:错误如下: update imim_gireqbillitems gi left join imim_gireqbills g on g.guid=gi.guid set gi....
  • mysql 优化-子查询left join(一)

    千次阅读 2015-08-17 15:26:39
    这时发现sql里面不仅仅有子查询还有left jion查询,这个查询时间大概0.054s。感觉怪怪的。。。。。就是代码不美观。其实还有其他原因比如:left join 更规范,left jion数据库引擎能更好自动优化 又一次改进: ...
  • 我想得到的是从表B中取跟表A某些字段相同,但是日期是小于表A的日期的最大的一条记录。 我之前测试的时候使用如下数据: ...却提示列不能外部联接到子查询的错误。 请教一下为什么会报错?或者有没有什么其他的写法?
  • oracle update left join查询

    千次阅读 2018-11-16 23:23:23
    对于有的更新语句,要更新的表可能条件不够,需要用到left join关联其他表, 但是不能直接关联,否则报错:错误如下: update imim_gireqbillitems gi left join imim_gireqbills g on g.guid=gi.guid set gi....
  • 先放一条 重复数据 的脏SQL SELECT O.ID AS ID,O.NAME AS NAME,COUNT(C.ID) AS CLASS_NUM FROM T_BASE_ORGANIZATION O LEFT JOIN T_XSXX_CLASSINFORMATION C ON O.ID ...LEFT JOIN T_SZDW_CLASSMEETING_PLAN P ON ...
  • 转载  在一些业务场景中,会使用NOT EXISTS语句确保返回数据不存在于特定集合,部分同事会发现NOT EXISTS有些场景性能较差,甚至有些网上...子查询中无法使用索引,使得子查询性能较差,最终影响整个查询的执行性能

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 74,818
精华内容 29,927
关键字:

leftjoin子查询