MySQL:主表与同一子表的多次关联,字段值的组合处理

通过多个 LEFT JOIN,可以从同一表中提取多种不同的记录。这样可以在单个查询中获取更丰富的信息。
进行多次连接可能会影响查询性能,尤其是当数据量较大时。每次连接都可能导致查询的复杂性增加,因此在设计查询时需要考虑性能和可读性。
提供SQL:

SELECT t.sg_no AS applyNo, t.xm_Name AS xmName,t.dept_Name AS deptName,t.budget_Sum,
	concat(round(((t.budget_Sum-t2.all_offer) / t.budget_Sum) * 100, 2), '%') as jyl, --求百分比
	GROUP_CONCAT(CONCAT(t3.provider_Name, '(', t3.all_offer, ')')) AS wzbxx --字段组合
FROM  online_bidding_head t
LEFT JOIN bidding_result t2 ON (t.uuid = t2.fk_uuid AND t2.type = '1')
LEFT JOIN bidding_result t3 ON (t.uuid = t3.fk_uuid AND t3.type = '0')
WHERE  t.status_no = '10'  -- 确保只选择符合条件的记录
GROUP BY t.sg_no,t.xm_Name,t.dept_Name,t2.status_no, t.status_no --使用聚合函数必须要进行分组

对同一个表进行多次 LEFT JOIN 可以用于提取不同分类的数据和信息,尤其在需要将多种相关数据汇总在一起的时候,但是考虑到查询性能问题,可以在适当的字段上添加索引。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

engr_chen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值