我有这个查询
$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个月 如何将这两者结合起来并将它们分配给别名?
答案 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。没有经过测试但是它应该工作