在线精品99_中国九九盗摄偷拍偷看_91免费版在线观看_91.app_91高清视频在线_99热最新网站

怎么在mysql中使用多个left join连接查询

124次阅读
没有评论

共计 2749 个字符,预计需要花费 7 分钟才能阅读完成。

自动写代码机器人,免费开通

这期内容当中丸趣 TV 小编将会给大家带来有关怎么在 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
 (
 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 分析,发现其中 2 个子查询是全部扫描,可以使用 mysql 的多个 left join 优化

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
 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 秒

上述就是丸趣 TV 小编为大家分享的怎么在 mysql 中使用多个 left join 连接查询了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注丸趣 TV 行业资讯频道。

向 AI 问一下细节

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-12-04发表,共计2749字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)
主站蜘蛛池模板: 成年美女黄网站色大片免费看 | 男人的天堂免费一区二区视频 | 午夜福利院电影 | 国内精品久久久久久影院网站小说 | 中文无码制服丝袜人妻av | 黄色软件在线免费看 | 国产宅男 | 天堂资源在线 | xxxx69欧美 | 欧美v国产v亚洲v日韩九九 | 亚洲精品久久午夜香蕉 | 88久久精品无码一区二区毛片 | 一级特黄aaa大片29 | 一区二区不卡久久精品 | 国产日韩高清一区二区三区 | 五月丁香久久综合网站 | 成人看的午夜免费毛片 | 国产精品国产欧美综合一区 | 在线欧美自拍 | 国产成+人+综合+欧美 亚洲 | 一区二区不卡久久精品 | 四虎影在永久地址在线观看 | 日本做a视频 | 亚洲经典在线 | 激情成人黄色 | 99久在线精品99re6视频 | 成人区人妻精品一区二区不卡视频 | 精品久久久无码中文字幕天天 | 狠狠色噜噜狠狠狠狠97影音先锋 | 久久久日本精品一区二区三区 | 直接看的毛片 | 欧美日韩综合高清一区二区 | 日本a级视频在线播放 | 国内精品久久久久影院一蜜桃 | 亚洲精选在线观看 | 国产精品久久久久影院嫩草 | 精品av中文字幕在线毛片 | 精品福利在线观看 | 久久久精品国产免费观看同学 | 欧美成人aa久久狼窝五月丁香 | 四虎a级欧美在线观看 |