Mysql 选择具有多个连接的 Max

标签 mysql max

我有以下结构:

Attended:
  id
  user
  date


Meetings:
  id
  data
  place

Places
  id
  name

users
  id
  name

我正在尝试获取用户参加 session 的最长日期,我可以通过运行以下命令来做到这一点:

select (meetings.date), places.name, meetings.id, attend.user
from attend
    inner join meetings on meetings.Id = attend.meeting 
    inner join places on meetings.place = places.id
WHERE meetings.date IN (select max(meetings.date) from meetings)

但是,只有日期才是正确的,如果我尝试打印出地点的名称,它不会是与最大日期的 session 相关联的地点,但它实际上会打印我的第一行的地点。从出席表中获取。

根据 session 日期查找最长出席日期的最佳方法是什么?

最佳答案

您正在寻找这样的东西吗?

SELECT a.user_name, a.meeting, a.place_name, a.date 
  FROM 
(
  SELECT a.user, a.meeting, m.date, p.name place_name, u.name user_name
    FROM attended a JOIN meetings m
      ON a.meeting = m.id JOIN places p
      ON m.place = p.id JOIN users u
      ON a.user = u.id
) a JOIN 
(
  SELECT a.user, MAX(m.date) date
    FROM attended a JOIN meetings m
      ON a.meeting = m.id
   GROUP BY user
) q 
    ON a.user = q.user
   AND a.date = q.date
 ORDER BY user_name

示例输出:

| USER_NAME | MEETING | PLACE_NAME |                          DATE |
--------------------------------------------------------------------
|    User 1 |       2 |    Place 2 | August, 11 2013 00:00:00+0000 |
|    User 2 |       1 |    Place 1 |   July, 12 2013 00:00:00+0000 |
|    User 3 |       1 |    Place 1 |   July, 12 2013 00:00:00+0000 |

这里是SQLFiddle 演示

关于Mysql 选择具有多个连接的 Max,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18423938/

相关文章:

c# - Entity Framework 对现有数据的流畅 API

python - 需要帮助在 python 中查找字典对象

matlab - 计算第二个最小值的有效方法

java - 返回java中的最大值

mysql - 关于 mysql 的混淆,例如 search 和 = search

mysql - 错误 : Failed to build gem native extension (mysql2 on rails 3. 2.3)

php - 如何在php mysql中添加数据库导入路径

mysql - HAProxy 从 DOWN 到 UP 时使用服务器

MYSQL从连接表中选择最大日期

json - D3 : best way to find max value in a JSON object