在同一个表上连接两个mysql查询的结果

时间:2014-06-26 09:32:33

标签: mysql multiple-results

我有一种直觉,我错过了一些简单的东西,所以请原谅我这是一个愚蠢的问题,但我在这里找不到答案。

我正在使用使用行为来处理数据库。我们每个用户有一行,包括日期和时间(以及其他不相关的信息)。

我想输出每日访问次数的直方图,以及持续超过一定时间的访问次数;理想情况下,我希望在一个查询中有这个。

现在我有这两个问题:

SELECT DATE(date), COUNT(date) AS Number_of_users FROM users GROUP BY DATE(date)
SELECT DATE(date), COUNT(date) AS Number_of_stayers FROM users WHERE timespent>5 GROUP BY DATE(date)

如何组合它们以获得以下形式的结果:

date        users       stayers
2014-01-01  21          5
2014-01-02  13          0

提前感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

您可以尝试使用IF,如下所示:

SELECT DATE(date), 
       COUNT(date) AS Number_of_users,
       SUM(IF(timespent>5,1,0)) AS Number_of_stayers 
FROM users 
GROUP BY DATE(date)

答案 1 :(得分:1)

这应该有用,或者至少显示使用JOIN的基本思路:

SELECT DATE(a.date), 
    COUNT(a.date) AS Number_of_users, 
    COUNT(b.date) AS Number_of_stayers 
FROM users a 
LEFT JOIN users b ON (a.date = b.date AND b.timespent>5)