记录一次线上数据查询,从单句查询到 子查询

业务需求: 查询 参与活动的人数 和获得奖励的次数
惯性思维: 简单查询 一个个的查询,最后汇总。
造成这样思考的原因是工作中 查询不是太多,基本上都是单表单个用户的查询; 也算是复习下 子查询的用法
初始:
select count(*) from Xx表名 where XX = bb group by xy
这样只能拿到抽奖或人数的 数据,需要手动加

思考: 对数据进行分组 并统计其中2个组的总和
对用户进行分组 ,统计人数, 并对获奖的用户进行过滤

select count(*) 人数, sum(number) 
from (select count(*) number from table_name 
where xx= bb and aa in () 
group by user_id) as numbers;

子查询方式

子查询可以用于过滤数据、计算聚合值或在查询中进行比较
  • 子查询作为 SELECT 语句的一部分:
SELECT column1, column2, (SELECT column3 FROM table2 WHERE table2.id = table1.id) AS subquery_result
FROM table1;

子查询 (SELECT column3 FROM table2 WHERE table2.id = table1.id) 嵌套在主查询中,并返回与 table1 中每个 id 对应的 table2 表的 column3 值。

  • 子查询作为 WHERE 子句的一部分:
SELECT column1, column2
FROM table1
WHERE column3 IN (SELECT column3 FROM table2);

子查询 (SELECT column3 FROM table2) 返回一个列名为 column3 的值列表,这些值被用于主查询中的筛选条件。

  • 子查询作为 FROM 子句的一部分(内联视图):
SELECT subquery_result.column1, subquery_result.column2
FROM (SELECT column1, column2 FROM table1) AS subquery_result;

子查询 (SELECT column1, column2 FROM table1) 被赋予了一个别名 subquery_result,并作为一个内联视图在主查询中使用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值