Mysql JOIN多表嵌套查询

网上找的大多数有关嵌套查询的都是关于 IN 的使用,比如
SELECT * FROM tab1 WHERE key IN (SELECT key2 FROM tab2)
通常来说这样的嵌套只能处理比较简单的情况,在相对复杂的情况就涉及将一个SELECT的结果LEFT JOIN到查询之中,比如:

SELECT1.Shop AS 门店,1.Code AS 号码,1.Stock AS 股票,2.Name AS 名称,
        临时表.Profit AS 利润,
        IFNULL(临时表.Num,0) AS 销量
FROM1
LEFT JOIN2 on1.Code=2.Code
LEFT JOIN (
	select Code,SUM(Num) as Num, SUM(Profit) AS Profit 
	from3
	group by Code) as 临时表 on 临时表.Code=1.Code
where1.Date='2020-02-02'
  • 本例中临时表就是一个被LEFT JOIN的子查询,LEFT JOIN 后面别忘了跟上表别名,我在这里使用了嵌套的查询,并赋予别名,然后可以直接在select后面使用临时表.Profit
  • SUM(Num) 使用函数后该字段的名字就是SUM(Num) 而不是Num,所以可以加一个as使用别名改回正常的名字
  • IFNULL(expr, val) 表示判断表达式是否为空,若为空用val替代,用以解决left join 产生的空值
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值