zoukankan      html  css  js  c++  java
  • 【mysql】left join on and 和 where的区别

    left join on and 

    SELECT a.order_id ,b.id FROM way_order a LEFT JOIN way_order_product b ON a.order_id=b.order_id AND b.order_id >70

    返回a表中所有数据和符合and条件的b数据

    179 (NULL)
    180 (NULL)
    183 (NULL)
    220 8
    224 9

    SELECT a.order_id ,b.id FROM way_order a inner JOIN way_order_product b ON a.order_id=b.order_id AND b.order_id >70

    SELECT a.order_id ,b.id FROM way_order a LEFT JOIN way_order_product b ON a.order_id=b.order_id where b.order_id >70

    220 8
    224 9

    and后条件在 inner join起作用相当于 把条件放在where后

     SELECT a.* ,b.id,b.order_id FROM way_order a INNER JOIN way_order_team b ON a.order_id=b.order_id WHERE b.order_id >70

     SELECT a.* ,b.id,b.order_id FROM way_order a INNER JOIN way_order_team b ON a.order_id=b.order_id and b.order_id >70

    上面两个sql基本等价

    EXPLAIN SELECT a.* ,b.id,b.order_id FROM way_order a left  JOIN way_order_team b ON a.order_id=b.order_id WHERE b.order_id >70

    EXPLAIN SELECT a.* ,b.id,b.order_id FROM way_order a left JOIN way_order_team b ON a.order_id=b.order_id and a.order_id >70

    EXPLAIN SELECT a.* ,b.id,b.order_id FROM way_order a left JOIN way_order_team b ON a.order_id=b.order_id where a.order_id >70

    EXPLAIN SELECT a.* ,b.id,b.order_id FROM way_order a left JOIN way_order_team b ON a.order_id=b.order_id and b.order_id >70

    却有区别

    困难是老天给我们提高的机会,坚定不移勇敢地去攻克,不要退缩,加油!
  • 相关阅读:
    ps命令详解
    要做linux运维工程师的朋友,必须要掌握以下几个工具才行 ...
    Centos IP、DNS设置
    查看服务器 硬件参数命令(持续更新)
    Linux系统下配置短信猫
    vimrc 设置
    linux关于bashrc与profile的区别(转)
    Unix 设计哲学基础
    13年计算机真题
    华为卓越工作法读后感
  • 原文地址:https://www.cnblogs.com/merlini/p/3153023.html
Copyright © 2011-2022 走看看