MySQL联结查询和子查询
2018-2-24 16:18:12 星期六
今天需要统计一个运营活动的数据, 涉及三个表, 分组比较多
活动描述:
每个人可以领取多张卡片, 好友也可以赠送其卡片, 20或40张卡片可以兑换一个奖品
要求统计出:
1. 每个用户的个人信息, 2. 领取的卡总数, 3. 自己领的卡的数目, 4. 好友送的卡的数目, 5. 兑换奖品的数目
遇到的问题有:
1. 要先用group by 得到每个用户总共的卡数量, 再用group by 得到每个用户被赠送的卡数量, 然后对两者做减法得到自己领取卡的数量 // 减法, 第1行
2. 每个用户可以兑换多个奖品, 因此要把uid相同的多行奖品记录连接成一行, 这个用到了 group by + group_concat() //第4行
SQL:
下边的SQL整体来看是几个left join , 而join的表不是表名, 是一个子查询
select a.uid, c.nickname, c.mobile, a.uid_cards, (a.uid_cards - b.send_uids) as self_cards, b.send_uids, c.regdate, FROM_UNIXTIME(c.regdate, '%Y-%m-%d'), d.award_ids
from (select uid, count(*) as uid_cards from tabale1 group by uid) as a
left join (select uid, count(*) as send_uids from tabale1 where send_uid > 0 group by uid) as b on a.uid = b.uid
left join (select uid, group_concat(award_id) as award_ids from table2 group by uid) as d on a.uid = d.uid
left join table3 as c on a.uid = c.uid;
table1: 每个人的领取卡片记录表
table2: 每个人的兑换奖品记录列表
table3: 用户信息表
MySQL联结查询和子查询的更多相关文章
- mysql的查询、子查询及连接查询
>>>>>>>>>> 一.mysql查询的五种子句 where(条件查询).having(筛选).group by(分组). ...
- MySQL (六)--外键、联合查询、子查询
1 外键 外键:foreign key,外面的键(键不在自己表中),如果一张表中有一个字段(非主键)指向另外一张表的主键,那么将该字段称为外键. 1.1 增加外键 外键可以在创建表的时候或创建表之后增 ...
- mysql 外键和子查询,视图
1.mysql 外键约束 建表时生成外键 foreing key ('sid') references' student'('id'); 建表后添加外键 alter table' course ...
- MySQL(八)子查询和分组查询
一.子查询 1.子查询(subquery):嵌套在其他查询中的查询. 例如:select user_id from usertable where mobile_no in (select mobil ...
- MySQL之多表查询一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习
MySQL之多表查询 阅读目录 一 介绍 二 多表连接查询 三 符合条件连接查询 四 子查询 五 综合练习 一 介绍 本节主题 多表连接查询 复合条件连接查询 子查询 首先说一下,我们写项目一般都会建 ...
- mysql学习之路_联合查询与子查询
联合查询 联合查询:将多次查询(多条select语句)在记录上进行拼接(字段不会增加). 语法:多条select语句构成,每条select语句获取的字段必须严格一致(但是字段类型无关). Select ...
- 从项目上一个子查询扩展学习开来:mysql的查询、子查询及连接查询
上面这样的数据,想要的结果是:如果matchResult为2的话,代表是黑名单.同一个softId,version,pcInfoId的代表是同一个软件,需要去重:同时,如果相同软件里面只要有一个mat ...
- MySQL连接查询、联合查询、子查询
参考地址:http://blog.csdn.net/u011277123/article/details/54863371 1.MySQL连接查询 连接查询:将多张表(>=2)进行记录的连接(按 ...
- mysql update不支持子查询更新
先看示例: SELECT uin,account,password,create_user_uin_tree FROM sys_user 结果: 表中的create_user_uin_tree标识该条 ...
- Mysql的查询语句(联合查询、连接查询、子查询等)
Mysql的各个查询语句(联合查询.连接查询.子查询等) 一.联合查询 关键字:union 语法形式 select语句1 union[union选项] select 语句2 union[union选项 ...
随机推荐
- python --github 刷题
第 0001 题:做为 Apple Store App 独立开发者,你要搞限时促销,为你的应用生成激活码(或者优惠券),使用 Python 如何生成 200 个激活码(或者优惠券)? import r ...
- 如何更改vs2013中git的远程仓库url地址
可以通过修改Git库配置文件实现,请看下图:
- GBK 字符集
什么是 GBK ? 中文名 汉字编码字符集 外文名 Chinese Internal Code Specification 全 称 <汉字内码扩展规范> GBK编码,是对GB2312 ...
- 保存页面数据的场所----Hidden、ViewState、ControlState
1.使用隐藏域Session.Application和Cache都是保存在服务器内存中的.一般来说我们是无权访问客户端的机器,把数据直接保存在客户端的(Cookie是一个例外,不过Cookie只能保存 ...
- nginx静态资源反向代理
server { listen 80; server_name music.didi365.com; index index.php index.html index.htm; root /alida ...
- 练习:javascript弹出框及地址选择功能,可拖拽
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- Java基础_0309:this关键字
this简介 在Java中this可以完成三件事情:表示本类属性.表示本类方法.当前对象(只是先介绍概念) 调用本类属性 在一个类中定义的方法中可以直接访问类中的属性,但是很多时候有可能会出现方法参数 ...
- jq的stop
jQuery stop() 方法用于停止动画或效果,在它们完成之前. stop() 方法适用于所有 jQuery 效果函数,包括滑动.淡入淡出和自定义动画. $(selector).stop(stop ...
- Linux查看系统的基本信息
uname -r :显示操作系统的发行版号 uname -a:显示系统名.节点名称.操作系统的发行版号.操作系统版本.运行系统的机器 ID 号. # Ubuntu系统 ubuntu@VM-28-69- ...
- 20165234 《Java程序设计》实验一 Java开发环境的熟悉
一.实验报告封面 课程:Java程序设计 班级:1652班 姓名:刘津甫 学号:20165234 指导教师:娄嘉鹏 实验日期:2018年4月2日 实验时间:15:35 - 17:15 实验序 ...