gpt4 book ai didi

php - 使用 INNER JOIN、GROUP BY 和 Max 的 MySql 查询

转载 作者:太空宇宙 更新时间:2023-11-03 11:46:42 27 4
gpt4 key购买 nike

我有两张表,一张看起来像这样:

ID, Datetime, User_ID, Location and Status // the rest is not relevant

另一个看起来像这样:

 ID, Lastname // the rest is not relevant

现在我只想获取每个 User_ID 具有最高 Datetime 的第一个表的条目,并询问另一个表的 lastname 用户 ID。简单...

我尝试过这种方式(看起来最有希望但实际上是错误的):

SELECT w.Datetime, w.User_ID, w.Status, e.Lastname
FROM worktimes AS w
INNER JOIN employees AS e
ON w.User_ID=e.ID
RIGHT JOIN (SELECT max(Datetime) AS Datetime, User_ID
FROM worktimes
WHERE Datetime>1467583200 AND Location='16'
GROUP BY User_ID
ORDER BY Datetime DESC
) AS v
ON v.User_ID=w.User_ID
GROUP BY w.User_ID
ORDER BY e.Nachname;

有人可以给我一个提示吗?我真的坚持了一段时间,现在我开始在我的脑子里打结......:(

最佳答案

实际上,你非常接近:

SELECT w.Datetime, w.User_ID, w.Status, e.Lastname
FROM worktimes w INNER JOIN
employees e
ON w.User_ID = e.ID LEFT JOIN
(SELECT max(Datetime) AS Datetime, User_ID
FROM worktimes
WHERE Datetime > 1467583200 AND Location = '16'
GROUP BY User_ID
) ww
ON ww.User_ID = w.User_ID AND w.DateTime = ww.DateTime
ORDER BY e.Nachname;

注意事项:

  • 您确实需要加入 DateTime 值。
  • RIGHT JOIN 是不必要的。我用 LEFT JOIN 替换了它,但我也不确定这是否是您想要的。您可以从 INNER JOIN 开始,看看它是否会产生您想要的结果。
  • 在大多数情况下,不要在子查询中使用 ORDER BY
  • 您不需要在外部查询中使用 GROUP BY

关于php - 使用 INNER JOIN、GROUP BY 和 Max 的 MySql 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38186383/

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