假设我有下表users
:
id name
1 John
2 Mike
3 Max
和表posts
id author_id date title
1 1 2014-12-12 Post 2
2 1 2014-12-10 Post 1
3 2 2014-10-01 Lorem ipsum
...and so on
我想要一个包含以下数据的查询:
用户名
上周用户发帖数
上个月用户发帖数
我可以为每个单独的用户执行此操作(在以下示例中使用 id 1):
SELECT
`name`,
(SELECT COUNT(*) FROM `posts`
WHERE
`author` = 1 AND
UNIX_TIMESTAMP()-UNIX_TIMESTAMP(`date`) < 7*24*3600) AS `posts7`,
(SELECT COUNT(*) FROM `posts`
WHERE
`author` = 1 AND
UNIX_TIMESTAMP()-UNIX_TIMESTAMP(`date`) < 30*24*3600) AS `posts30`
FROM `users`
WHERE `id` = 1
如果我可以在内部和外部 SELECT 之间交换数据,我怀疑 MySQL 将允许在一个查询中为所有用户执行此操作。我可能用错了词,但我真的希望这里的人能理解我的需求,我会得到一些帮助。