共计 1234 个字符,预计需要花费 4 分钟才能阅读完成。
自动写代码机器人,免费开通
本篇文章为大家展示了怎么在 mysql 中实现多表关联统计,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。
需求:
统计每本书打赏金额,不同时间的充值数据统计,消费统计,
设计四个表,book 书本表,orders 订单表 reward_log 打赏表 consume_log 消费表,通过 book_id 与 book 表关联,
问题:
当关联超过两张表时导致统计时数据重复,只好用子查询查出来,子查询只能查一个字段,这里用 CONCAT_WS 函数将多个字段其拼接
实现:
查询代码如下
SELECT
b.id,
b.book_name,
sum( IF ( o.create_time 0 o.create_time 9999999999, o.price, 0 ) ) today_pay_money,
sum( IF ( o.create_time 0 o.create_time 9999999999, 1, 0 ) ) today_pay_num,
sum( IF ( o.create_time 999 o.create_time 9999, o.price, 0 ) ) yesterday_pay_money,
sum( IF ( o.create_time 999 o.create_time 9999, 1, 0 ) ) yesterday_pay_num,
sum(o.price) total_pay_money,
sum( IF ( o.create_time 9999 o.create_time 99999, 1, 0 ) ) total_pay_num,
( SELECT SUM( total_score ) FROM book_reward_log WHERE book_id = b.id ) total_score,
SELECT
CONCAT_WS(
, ,
SUM( IF ( create_time 0 create_time 998, score, 0 ) ),
SUM( IF ( create_time 9999 create_time 99998, score, 0 ) ),
SUM( IF ( create_time 99999 create_time 999998, score, 0 ) )
)
FROM
book_consume_log
WHERE
book_id = b.id
) score
FROM
book_book b
LEFT JOIN book_orders o ON b.id = o.bid
GROUP BY
b.id
查询结果
score 为三个消费数,以逗号隔开
性能分析
上述内容就是怎么在 mysql 中实现多表关联统计,你们学到知识或技能了吗?如果还想学到更多技能或者丰富自己的知识储备,欢迎关注丸趣 TV 行业资讯频道。
向 AI 问一下细节正文完