我有一张桌子:
`tasks` (`id`, `url_id`, `task`, `date`)
task
可以获取值:1,2,3。date
是一个unix时间戳。如何获取一个数据,说明在url_id
= 1的日常工作中执行了多少任务。预期结果是:
{`count_task_1`: 30, `count_task_2`: 14, `count_task_3`: 30, `date`='2011-03-12'}, [..]
这样的内容会告诉我当天url_id
= 1的所有参赛作品的数量:
SELECT COUNT(`id`) FROM `tasks` WHERE `url_id`=1 GROUP BY DATE(FROM_UNIXTIME(`date`));
我看到的唯一选项:多个查询或子查询(几乎相同)。
答案 0 :(得分:0)
感谢jink
帮助我解决这个问题。
SELECT `task`, COUNT(`id`) `count`, DATE(FROM_UNIXTIME(`date`)) `date` FROM `tasks` WHERE `url_id`=3 GROUP BY `task`, DATE(FROM_UNIXTIME(`date`));
答案 1 :(得分:0)
您可以在 上使用这种高性能技巧来处理不同的值:
SELECT
SUM(task_id = 1) as count_task_1,
SUM(task_id = 2) as count_task_2,
SUM(task_id = 3) as count_task_3,
DATE(FROM_UNIXTIME(`date`)) as date
FROM tasks
WHERE url_id=1
GROUP BY 4;
这是有效的,因为mysql(和许多其他dbs)中的true
是1
而false
是0
,所以条件的SUM()
是计数为true
。