【发布时间】:2015-12-18 10:41:05
【问题描述】:
我有类似如下的数据库结构: 应用服务表:
+-----+--------------+----------+---------------+
| id | name | status | application_id
| 1 | Service 1 | 1 | 24
| 2 | Service 2 | 2 | 24
| 3 | Service 3 | 3 | 25
+-----+--------------+----------+----------------
还有其他带有状态定义的表: 客户状态
+------------+--------------+----------+-----------+
| status_id | name | level | is_closed
| 1 | Status 1 | 2 | 1
| 2 | Status 2 | 1 | 0
| 3 | Status 3 | 3 | 1
+------------+--------------+----------+----------
ApplicationServices 每一行的状态计算为按 application_id 分组的记录中的最高级别状态。
因此,从 ApplicationServices 中获取所有具有状态的记录将导致如下结果:
+-----+--------------+----------+----------------+-------------+-----------
| id | name | status | application_id | status_name | is_closed
| 1 | Service 1 | 1 | 24 | Status 1 | 1
| 2 | Service 2 | 2 | 24 | Status 1 | 1
| 3 | Service 3 | 3 | 25 | Status 3 | 1
+-----+--------------+----------+----------------+-------------+-----------
有没有一种有效的方法可以将 max(level) 按 application_id 分组的结果附加到结果集的每一行?
【问题讨论】:
标签: mysql sql select group-by greatest-n-per-group