gpt4 book ai didi

mysql - 在连接结果中,ORDER 先于 GROUPING

转载 作者:行者123 更新时间:2023-11-29 13:32:54 25 4
gpt4 key购买 nike

我有两个表:

  • 用户表
  • “经验”表,其中包含有关当前用户就读的学校的信息。该表可以包含多个学校(即以前的学校历史,甚至工作)

我希望获取用户表,然后还获取当前学校(按以下顺序排序:ex​​p_date)

查询如下所示:

SELECT 
u.user_id,
u.firstname,
pn.programme_name,
e.exp_start,
en.firstname AS name
FROM
edu_users u
LEFT JOIN edu_experience e ON e.exp_user = u.user_id
LEFT JOIN edu_users en ON en.user_id = e.exp
LEFT JOIN edu_programmes pn ON pn.programme_id = e.exp_position
ORDER BY
exp_start DESC

它返回这个结果:

第一个结果(来自用户 id 1)是我需要的 - 不应获取与 user_id 1 关联的以下两个结果。

我如何实现这个目标?我尝试过 group by user_id但随后数据在排序之前进行分组,因此结果如下所示:

有什么想法吗?我已经尝试使用 min() 如这个问题中所述:ORDER BY date and time BEFORE GROUP BY name in mysql但它不起作用。

最佳答案

加入子选择以获得每个用户的最新体验,然后加入回体验(及以后)以获取其他详细信息

类似这样的事情

SELECT 
u.user_id,
u.firstname,
pn.programme_name,
e.exp_start,
en.firstname AS name
FROM
edu_users u
LEFT JOIN (SELECT exp_user, MAX(exp_start) AS MaxExpStart FROM edu_experience GROUP BY exp_user) e1 ON e1.exp_user = u.user_id
LEFT JOIN edu_experience e ON e.exp_user = u.user_id AND e.exp_start = e1.MaxExpStart
LEFT JOIN edu_users en ON en.user_id = e.exp
LEFT JOIN edu_programmes pn ON pn.programme_id = e.exp_position
ORDER BY
exp_start DESC

关于mysql - 在连接结果中,ORDER 先于 GROUPING,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19160222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com