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

mysql多個(gè)left join連接查詢(xún)用法分析

 更新時(shí)間:2018年07月10日 12:05:11   作者:CyborgLin  
這篇文章主要介紹了mysql多個(gè)left join連接查詢(xún)用法,結(jié)合實(shí)例形式對(duì)比分析了mysql使用left join進(jìn)行連接查詢(xún)相關(guān)操作技巧與注意事項(xiàng),需要的朋友可以參考下

本文實(shí)例講述了mysql多個(gè)left join連接查詢(xún)用法。分享給大家供大家參考,具體如下:

mysql查詢(xún)時(shí)需要連接多個(gè)表時(shí),比如查詢(xún)訂單的商品表,需要查詢(xún)商品的其他信息,其他信息不在訂單的商品表,需要連接其他庫(kù)的表,但是連接的條件基本都是商品ID就可以了,先給一個(gè)錯(cuò)誤語(yǔ)句(查詢(xún)之間的嵌套,效率很低):

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

查詢(xún)結(jié)果耗時(shí)4秒多,explain分析,發(fā)現(xiàn)其中2個(gè)子查詢(xún)是全部掃描,可以使用mysql的多個(gè)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

查詢(xún)結(jié)果耗時(shí)0.04秒

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

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

相關(guān)文章

  • MySQL完整性約束的定義與實(shí)例教程

    MySQL完整性約束的定義與實(shí)例教程

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

    Navicat配置mysql數(shù)據(jù)庫(kù)用戶(hù)權(quán)限問(wèn)題

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

    mysql zip 文件安裝教程

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

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

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

    詳解Windows10下載mysql的教程圖解

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

    springboot啟動(dòng)404問(wèn)題以及解決方案

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

    MySQL null的一些易錯(cuò)點(diǎn)

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

    MySql之視圖索引的具體使用

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

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

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

    關(guān)于MySQL innodb_autoinc_lock_mode介紹

    下面小編就為大家?guī)?lái)一篇關(guān)于MySQL innodb_autoinc_lock_mode介紹。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-03-03

最新評(píng)論