我services在 MySQL 数据库上有一个包含以下列行的表
`id` `service_rendered` `created_at`
1 repair 2016-11-19 14:40:56
2 install 2016-11-19 14:40:58
3 repair 2016-11-19 14:44:27
4 install 2016-11-19 14:50:35
Run Code Online (Sandbox Code Playgroud)
我正在尝试计算服务数量和上次呈现的日期/时间。列created_at是日期时间类型。
我正在运行的 SQL 语句是:
SELECT COUNT(`service_rendered`) as `count_service`, `service_rendered`, `created_at` as `last_rendered`
FROM services
WHERE `id` IN (1,2,3)
GROUP BY `service_rendered`
ORDER BY `created_at` DESC
Run Code Online (Sandbox Code Playgroud)
但我得到的是:
`count_service` `service_rendered` `last_rendered`
2 repair 2016-11-19 14:40:56
1 install 2016-11-19 14:40:58
Run Code Online (Sandbox Code Playgroud)
我如何编写我的 SQL 以便我能够得到 2016-11-19 14:44:27 的修复?
您可以MAX在created_at列上使用以下解决方案:
SELECT COUNT(`service_rendered`) AS `count_service`, `service_rendered`, MAX(`created_at`) AS `last_rendered`
FROM services
WHERE `id` IN (1,2,3)
GROUP BY `service_rendered`
ORDER BY `last_rendered` DESC
Run Code Online (Sandbox Code Playgroud)
你想ORDER BY created_at DESC吗?
您必须使用列的别名last_rendered,因此替换ORDER BY created DESC为ORDER BY last_rendered DESC