结合2个MySQL查询

时间:2014-08-03 16:16:15

标签: php mysql sql database mysqli

我有这个查询

$mysqli->query("SELECT COUNT(*) from `login_log` where from_unixtime(`date`) >= DATE_SUB(NOW(), INTERVAL 1 WEEK);") or die($mysqli->error.__LINE__);

与1差​​异相同。它不是 1 WEEK ,而是 1个月 如何将这两者结合起来并将它们分配给别名?

3 个答案:

答案 0 :(得分:3)

我会用条件聚合来做到这一点:

SELECT SUM(from_unixtime(`date`) >= DATE_SUB(NOW(), INTERVAL 1 WEEK)),
       SUM(from_unixtime(`date`) >= DATE_SUB(NOW(), INTERVAL 1 MONTH))
FROM `login_log`;

MySQL将布尔值视为整数,1为" true"并且0正在" false"。因此,使用sum()可以计算匹配值的数量。 (在其他数据库中,您可以使用case执行类似操作。)

答案 1 :(得分:0)

尽管理解你的要求很难:

如果您希望它们在同一列中,请使用OR

$mysqli->query("SELECT COUNT(*) from 'login_log' where from_unixtime('date') >= DATE_SUB(NOW(), INTERVAL 1 WEEK) OR from_unixtime('date') >= DATE_SUB(NOW(), INTERVAL 1 MONTH) ;") or die($mysqli->error.__LINE__);

如果您不想要重复的答案:请使用GROUP BY

答案 2 :(得分:0)

使用内部为一个月的where条件,并将内部为一周的where条件添加为布尔列返回。

我的意思是

Select count (*) all_in_month, (from_unixtime(`date`) >= DATE_SUB(NOW(), INTERVAL 1 WEEK)) as in_week from `login_log` where from_unixtime(`date`) >= DATE_SUB(NOW(), INTERVAL 1 a MONTH) GROUP BY in_week;

P.S。没有经过测试但是它应该工作