SQL Group By Order BY 在日期时间列上降序

Jai*_*jr. 3 mysql sql

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 的修复?

Seb*_*sch 5

您可以MAXcreated_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)

演示: http : //sqlfiddle.com/#!9/3906b7/2

你想ORDER BY created_at DESC吗?

您必须使用列的别名last_rendered,因此替换ORDER BY created DESCORDER BY last_rendered DESC