zoukankan      html  css  js  c++  java
  • 夺标查询和联合查询有什么区别么

    sql = "select [个人信息$].*,[工作经历$].* from [个人信息$],[工作经历$] where [个人信息$].UID=[工作经历$].UID"
    sql = "select [个人信息$].*,[工作经历$].* from [个人信息$] inner Join [工作经历$] on [个人信息$].UID=[工作经历$].UID"
    这2个SQL执行结果是一样的,难道没有区别么?

    第一种是普通的多表查询,内部还是笛卡尔积的逐行的搜索机制,如果查询的几张表数据量大的话会降低性能。慎用。
    第二种是内连接。
    两种方式得到的结果是一致的,推荐使用第二种。
    多表连接查询按要查的结果而定
    第一个,就是普通的连接查询,等同于
    select C.字段一 , count(A.主键)
    from Table A
    inner join Table B on A.B的主键 = B.主键
    inner join Table C on B.C的主键 = C.主键
    group C.字段一


    select C.字段一 , count(A.主键)
    from Table A
    join Table B on A.B的主键 = B.主键
    join Table C on B.C的主键 = C.主键
    group C.字段一

    第二个采用了左连接
    也就是以A为主表,要把条件中A的显示完全,即如果C.字段1对应的A主键为空,那么就显示0,可如果在第一中查询,如果为空,那就不显示了

    正常来说,速度都差不多,因为执行方式基本一致

    SELECT * FROM t1 LEFT JOIN t2 ON (column1) WHERE t2.column2=5;
  • 相关阅读:
    Kafka中的数据清理(logdeletion)
    genymotion虚拟器笔记
    layui hover显示图片
    vue 导出到excel
    el-tree知识积累
    js 含有对象的数组去重
    苏宁易购价格爬取(golang)
    vue+elementui+beego笔记
    vue笔记
    beego笔记
  • 原文地址:https://www.cnblogs.com/panxuejun/p/6054792.html
Copyright © 2011-2022 走看看