mysql中一条sql语句中使用多个count关联查询多张表
来源:互联网 发布:linux数据备份 编辑:程序博客网 时间:2024/06/06 10:14
在给公司写代码的过程中忽然发现在sql语句中碰到一些小问题,虽然最终自己解决了,但是不得不说好不容易啊,故写此博客提醒自己,以免日后再在此处浪费时间。
需求:
有两张表,分别是marketChannelInfo表和marketDatasourceInfo表,
两张表的字段分别为:
CREATE TABLE `marketChannelInfo` ( `id` int(11) NOT NULL AUTO_INCREMENT, `channelName` varchar(40) NOT NULL DEFAULT '' COMMENT '渠道名称', `channelURL` varchar(100) NOT NULL DEFAULT '' COMMENT '渠道推广链接', `channelType` tinyint(1) NOT NULL DEFAULT '0' COMMENT '渠道推广类型 1: h5 2 其他', `createTime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', `updateTime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '更新时间', `createBy` int(11) NOT NULL DEFAULT '0' COMMENT '创建人', `updateBy` int(11) NOT NULL DEFAULT '0' COMMENT '更新人', `version` smallint(6) NOT NULL DEFAULT '1' COMMENT '数据版本号', `deleted` tinyint(1) NOT NULL DEFAULT '0' COMMENT '逻辑删除标记', PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=3938 DEFAULT CHARSET=utf8 COMMENT='市场推广渠道信息表'
CREATE TABLE `marketDatasourceInfo` ( `id` int(11) NOT NULL AUTO_INCREMENT, `dataType` tinyint(1) NOT NULL DEFAULT '0' COMMENT '数据类型 1:登录(引入用户) 2: 进件(引入进件) ', `channel` varchar(40) NOT NULL DEFAULT '' COMMENT '渠道名称', `dataValue` varchar(40) NOT NULL DEFAULT '' COMMENT '渠道名称', `dataTime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '数据进入系统时间', `createTime` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间', PRIMARY KEY (`id`), UNIQUE KEY `uniq_dataValue` (`dataValue`)) ENGINE=InnoDB AUTO_INCREMENT=109851 DEFAULT CHARSET=utf8 COMMENT='市场数据引流信息表'
现在需要根据marketDatasourceInfo表查询出marketChannelInfo表内对应渠道的注册用户人数以及对应的借款人数
即显示如下数据
因为逻辑设计的缘故,代码中根据链接注册的用户在注册之后进行借贷,则之前在marketDatasourceInfo表内的信息会被会被借款信息所取代,即dataType会由1变成2,故实际的用户注册是包含借贷用户的。借贷人数则是指dataType为2的。
查询语句如下:
SELECT mci.channelName,mci.channelURL,mci.channelType,COUNT(1) AS userCount ,(SELECT COUNT(1) FROM marketDatasourceInfo mdi WHERE mdi.`dataType`= 2 AND mdi.channel=mci.channelName) AS loanCountFROM marketChannelInfo mci LEFT JOIN marketDatasourceInfo mdi ON mci.channelName=mdi.channel GROUP BY mci.channelName ORDER BY mci.createTime DESC LIMIT 0,10
注意点:
1.group by
2.(SELECT COUNT(1) FROM marketDatasourceInfo mdi WHERE mdi.`dataType`= 2 AND mdi.channel=mci.channelName) AS loanCount
阅读全文
0 0
- mysql中一条sql语句中使用多个count关联查询多张表
- 一条记录中包含多个count
- mysql的count查询中使用条件
- 数据库中随机查询一条记录的SQL语句
- sql中关联查询
- sql利用在一条语句中count出不同的条件的值
- 在Excel中使用SQL语句对多个数据表进行精确筛选 (查询)
- 一条查询sql语句
- mysql中一些sql语句查询
- mysql中sql时间段查询语句
- 使用一条SQL语句删除表中重复记录
- 转:使用一条SQL语句删除表中重复记录
- 使用一条SQL语句删除表中重复记录
- 使用一条SQL语句删除表中重复记录
- 使用一条SQL语句删除表中重复记录
- 使用一条SQL语句删除表中重复记录
- 使用一条SQL语句删除表中重复记录
- 使用一条SQL语句删除表中重复记录
- 【解题报告】pku数算mooc 第8周 图 我爱北大(poj 4083)
- deepmind_lab 如何解决找不到vcvarsall.bat
- 2017互联网寒冬程序员求职随感
- 【Scikit-Learn 中文文档】最近邻
- 史上最全面的程序员招聘建议
- mysql中一条sql语句中使用多个count关联查询多张表
- Gson解析带中括号
- 树莓派WIFI一键连接配置
- winform 基础
- 二叉树的遍历--非递归操作
- pip及openpyxl安装
- OpenSSH服务及其相关应用
- Hive函数大全(完整版)
- 小结一下最近