欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

mysql多個left join連接查詢用法分析

 更新時間:2018年07月10日 12:05:11   作者:CyborgLin  
這篇文章主要介紹了mysql多個left join連接查詢用法,結合實例形式對比分析了mysql使用left join進行連接查詢相關操作技巧與注意事項,需要的朋友可以參考下

本文實例講述了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_name
FROM
  (
    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 A
LEFT 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

查詢結果耗時4秒多,explain分析,發(fā)現(xiàn)其中2個子查詢是全部掃描,可以使用mysql的多個left join優(yōu)化

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_money
FROM
  order_goods AS A
LEFT JOIN test_qyg_goods.goods AS B ON A.goods_id = B.goods_id
LEFT JOIN test_qyg_goods.goods AS C ON B.parentid = C.goods_id
LEFT JOIN test_qyg_user.buser_goods_list AS D ON A.photo_id = D.wid
LEFT JOIN test_qyg_supplier.brands AS E ON D.brand_id = E.gbid
LEFT JOIN order_info_sub AS F ON A.sub_order_id = F.order_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

查詢結果耗時0.04秒

更多關于MySQL相關內容感興趣的讀者可查看本站專題:《MySQL常用函數(shù)大匯總》、《MySQL日志操作技巧大全》、《MySQL事務操作技巧匯總》、《MySQL存儲過程技巧大全》及《MySQL數(shù)據庫鎖相關技巧匯總

希望本文所述對大家MySQL數(shù)據庫計有所幫助。

相關文章

  • MySQL完整性約束的定義與實例教程

    MySQL完整性約束的定義與實例教程

    數(shù)據完整性約束是對關系性模型完整性規(guī)則做某種約束條件,這篇文章主要給大家介紹了關于MySQL完整性約束的相關資料,需要的朋友可以參考下
    2021-05-05
  • Navicat配置mysql數(shù)據庫用戶權限問題

    Navicat配置mysql數(shù)據庫用戶權限問題

    這篇文章主要介紹了Navicat配置mysql數(shù)據庫用戶權限問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-03-03
  • mysql zip 文件安裝教程

    mysql zip 文件安裝教程

    這篇文章主要為大家詳細介紹了mysql zip 文件安裝教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-04-04
  • 詳解MySQL的主鍵查詢?yōu)槭裁催@么快

    詳解MySQL的主鍵查詢?yōu)槭裁催@么快

    這篇文章主要介紹了想借MySQL的主鍵查詢?yōu)槭裁催@么快,下面根據主題展開的內容有InnoDB行格式、InnoDB頁和InnoDB行格式等詳細內容,下面相關介紹需要的小伙伴可以參考一下
    2022-04-04
  • 詳解Windows10下載mysql的教程圖解

    詳解Windows10下載mysql的教程圖解

    本文通過圖文并茂的形式給大家介紹了Windows10下載mysql的方法,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-08-08
  • springboot啟動404問題以及解決方案

    springboot啟動404問題以及解決方案

    這篇文章主要介紹了springboot啟動404問題以及解決方案,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • MySQL null的一些易錯點

    MySQL null的一些易錯點

    這篇文章主要介紹了MySQL null的一些易錯點,幫助大家更好的理解和使用MySQL,感興趣的朋友可以了解下
    2020-12-12
  • MySql之視圖索引的具體使用

    MySql之視圖索引的具體使用

    MySql 視圖索引是一種基于視圖的索引,它允許在視圖上創(chuàng)建索引以提高查詢性能,本文主要介紹了MySql之視圖索引的具體使用,感興趣的可以了解一下
    2023-08-08
  • MySQL外鍵關聯(lián)操作的實現(xiàn)

    MySQL外鍵關聯(lián)操作的實現(xiàn)

    本文主要介紹了MySQL外鍵關聯(lián)操作的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-07-07
  • 關于MySQL innodb_autoinc_lock_mode介紹

    關于MySQL innodb_autoinc_lock_mode介紹

    下面小編就為大家?guī)硪黄P于MySQL innodb_autoinc_lock_mode介紹。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03

最新評論