本文实例讲述了mysql多个left join连接查询用法。分享给大家供大家参考,具体如下:

mysql查询时需要连接多个表时,比如查询订单的商品表,需要查询商品的其他信息,其他信息不在订单的商品表,需要连接其他库的表,但是连接的条件基本都是商品ID就可以了,先给一个错误语句(查询之间的嵌套,效率很低):

SELECT  A.order_id,  A.wid,  A.work_name,  A.supply_price,  A.sell_price,  A.total_num,  A.sell_profit,  A.sell_percent,  A.goods_id,  A.goods_name,  A.classify,  B.gb_nameFROM  (    SELECT      A.sub_order_id AS order_id,      A.photo_id AS wid,      A.photo_name AS work_name,      A.supply_price,      A.sell_price,      sum(A.num) AS total_num,      (        A.sell_price - A.supply_price      ) AS sell_profit,      (        A.sell_price - A.supply_price      ) / A.sell_price AS sell_percent,      A.goods_id,      A.goods_name,      B.goods_name AS classify    FROM      order_goods AS A    LEFT JOIN (      SELECT        A.goods_id,        A.parentid,        B.goods_name      FROM        test_qyg_goods.goods AS A      LEFT JOIN test_qyg_goods.goods AS B ON A.parentid = B.goods_id    ) AS B ON A.goods_id = B.goods_id    WHERE      A.createtime >= '2016-09-09 00:00:00'    AND A.createtime <= '2016-10-16 23:59:59'    AND FROM_UNIXTIME(      UNIX_TIMESTAMP(A.createtime),      '%Y-%m-%d'    ) != '2016-09-28'    AND FROM_UNIXTIME(      UNIX_TIMESTAMP(A.createtime),      '%Y-%m-%d'    ) != '2016-10-07'    GROUP BY      A.photo_id    ORDER BY      A.goods_id ASC  ) AS ALEFT JOIN (  SELECT    A.wid,    A.brand_id,    B.gb_name  FROM    test_qyg_user.buser_goods_list AS A  LEFT JOIN test_qyg_supplier.brands AS B ON A.brand_id = B.gbid) AS B ON A.wid = B.wid
SELECT  A.sub_order_id,  A.photo_id AS wid,  A.photo_name AS work_name,  A.supply_price,  A.sell_price,  sum(A.num) AS total_num,  (    A.sell_price - A.supply_price  ) AS sell_profit,  (    A.sell_price - A.supply_price  ) / A.sell_price AS sell_percent,  A.goods_id,  A.goods_name,  B.parentid,  C.goods_name AS classify,  D.brand_id,  E.gb_name,  sum(    CASE    WHEN F.buy_type = 'yes' THEN      A.num    ELSE      0    END  ) AS total_buy_num,  sum(    CASE    WHEN F.buy_type = 'yes' THEN      A.num    ELSE      0    END * A.sell_price  ) AS total_buy_money,  sum(    CASE    WHEN F.buy_type = 'no' THEN      A.num    ELSE      0    END  ) AS total_give_num,  sum(    CASE    WHEN F.buy_type = 'no' THEN      A.num    ELSE      0    END * A.sell_price  ) AS total_give_moneyFROM  order_goods AS ALEFT JOIN test_qyg_goods.goods AS B ON A.goods_id = B.goods_idLEFT JOIN test_qyg_goods.goods AS C ON B.parentid = C.goods_idLEFT JOIN test_qyg_user.buser_goods_list AS D ON A.photo_id = D.widLEFT JOIN test_qyg_supplier.brands AS E ON D.brand_id = E.gbidLEFT JOIN order_info_sub AS F ON A.sub_order_id = F.order_idWHERE  A.createtime >= '2016-09-09 00:00:00'AND A.createtime <= '2016-10-16 23:59:59'AND FROM_UNIXTIME(  UNIX_TIMESTAMP(A.createtime),  '%Y-%m-%d') != '2016-09-28'AND FROM_UNIXTIME(  UNIX_TIMESTAMP(A.createtime),  '%Y-%m-%d') != '2016-10-07'GROUP BY  A.photo_idORDER BY  A.goods_id ASC

更多关于MySQL相关内容感兴趣的读者可查看本站专题:《MySQL常用函数大汇总》、《MySQL日志操作技巧大全》、《MySQL事务操作技巧汇总》、《MySQL存储过程技巧大全》及《MySQL数据库锁相关技巧汇总》

希望本文所述对大家MySQL数据库计有所帮助。

更多相关文章

  1. MySQL系列多表连接查询92及99语法示例详解教程
  2. Linux下MYSQL 5.7 找回root密码的问题(亲测可用)
  3. MySQL 什么时候使用INNER JOIN 或 LEFT JOIN
  4. python list.sort()根据多个关键字排序的方法实现
  5. android 当系统存在多个Launcher时,如何设置开机自动进入默认的La
  6. android从服务器下载文件(php+apache+win7+MySql)
  7. 【android】监听网络变化连续多个广播的问题解决
  8. 【有图】android通过jdbc连接mysql(附文件)
  9. android sqlite 一次创建多个表

随机推荐

  1. 常用框架介绍的相关内容汇总
  2. vscode是什么?vscode实例用法汇总
  3. Android 高级进阶之深入剖析消息机制
  4. Android 必备进阶之百度推送
  5. Java中级进阶之集合框架
  6. 【送书】| 小鹿下血本给各位读者送书了
  7. 小鹿端午节来发福利了
  8. 将jar包导入本地仓库&&配置阿里仓库
  9. Android 高级进阶之深入剖析四大启动模式
  10. 认知 | IT 民工难道真的靠工资来买房买车