首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >组合MySQL查询

问组合MySQL查询
EN

Stack Overflow用户
提问于 2011-11-18 09:04:26
回答 5查看 260关注 0票数 3

我正在努力寻找组合这两个查询的方法……我尝试过子查询、连接、联合,但都没有成功:(

查询A

代码语言:javascript
复制
SELECT DATE(crtdtime) AS cntldate, sd_class, COUNT(crtdtime) AS created
FROM master
WHERE DATE(crtdtime) = '2011-11-16'
GROUP BY cntldate, sd_class

它会产生

代码语言:javascript
复制
+------------+----------+---------+
| cntldate   | sd_class | created |
+------------+----------+---------+
| 2011-11-16 | CUST     |    2226 |
| 2011-11-16 | NET      |     238 |
+------------+----------+---------+

查询B

代码语言:javascript
复制
SELECT DATE(rstdtime) AS cntldate, sd_class, COUNT(rstdtime) AS restored
FROM master
WHERE DATE(rstdtime) = '2011-11-16'
GROUP BY cntldate, sd_class

它会产生

代码语言:javascript
复制
+------------+----------+----------+
| cntldate   | sd_class | restored |
+------------+----------+----------+
| 2011-11-16 | CUST     |     2315 |
| 2011-11-16 | NET      |      221 |
+------------+----------+----------+

但希望最终结果是..。

代码语言:javascript
复制
+------------+----------+---------+----------+
| cntldate   | sd_class | created | restored |
+------------+----------+---------+----------+
| 2011-11-16 | CUST     |    2226 |     2315 |
| 2011-11-16 | NET      |     238 |      221 |
+------------+----------+---------+----------+

会非常感谢任何人的帮助。

谢谢。

EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2011-11-18 09:06:43

使用

代码语言:javascript
复制
SELECT C.cntldate, C.sd_class, C.created, R.restored
FROM
(
SELECT DATE(crtdtime) AS cntldate, sd_class, COUNT(crtdtime) AS created
FROM master
GROUP BY cntldate, sd_class
) C
INNER JOIN
(
SELECT DATE(rstdtime) AS cntldate, sd_class, COUNT(rstdtime) AS restored
FROM master
GROUP BY cntldate, sd_class
) R
ON R.cntldate = C.cntldate AND R.sd_class = C.sd_class
WHERE C.cntldate = '2011-11-16' AND R.cntldate = '2011-11-16'
票数 0
EN

Stack Overflow用户

发布于 2011-11-18 09:14:02

一种可能的方法

代码语言:javascript
复制
SELECT DATE(crtdtime) AS cntldate, 
  sd_class, 
  sum( DATE(crtdtime) = '2011-11-16') AS created
  sum( DATE(rstdtime) = '2011-11-16') AS restored
FROM master
WHERE DATE(crtdtime) = '2011-11-16' or DATE(rstdtime) = '2011-11-16'
GROUP BY cntldate, sd_class
票数 2
EN

Stack Overflow用户

发布于 2011-11-18 09:08:49

怎么样

代码语言:javascript
复制
select q1.cntldate, q1.sd_class, q1.created, q2.restored 
   from  (
   SELECT DATE(crtdtime) AS cntldate, sd_class, COUNT(crtdtime) AS created
      FROM master
      WHERE DATE(crtdtime) = '2011-11-16'
      GROUP BY cntldate, sd_class
   )  q1
   inner join (
      SELECT DATE(rstdtime) AS cntldate, sd_class, COUNT(rstdtime) AS restored
         FROM master
         WHERE DATE(rstdtime) = '2011-11-16'
         GROUP BY cntldate, sd_class
  ) q2
      on q1.cntldate=q2.cntldate and q1.sdclass = q2.sdclass

不过,这是Postgres语法,所以可能需要使用它才能与MySql一起运行

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8176565

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档