gpt4 book ai didi

mysql - 如何将 DISTINCT 与 JOIN 结合使用?

转载 作者:行者123 更新时间:2023-11-29 11:38:27 24 4
gpt4 key购买 nike

我有这两个表:
users :
users

playertimes : playertimes

(我知道 jumpsstyle 应该是 int 而不是 varchar() 但这不是我想要解决的问题)

我有一个查询,它应该在结果集中返回以下结果:

  1. name - 使用 JOIN 检索与 auth
  2. time
  3. style

这是我当前的查询:
SELECT p.style, p.time, u.name FROM playertimes p JOIN users u ON p.auth = u.auth WHERE p.map = 'bhop_good' ORDER BY p.time ASC;

这是我通过上面的查询得到的结果:
current query result

此时该表只能包含 style 两个可能的值分别是01 。我正在寻找的是 style一个DISTINCT ,所以就我而言,对于上面的查询,我只想获得 2 个结果(每个值 style 一行),其应类似于以下屏幕截图:

ideal resultset

我希望获得帮助,谢谢!

最佳答案

看起来您希望 style 的每个不同值的 style 行具有最小的 time 值。

你明白了,就像这样。这需要两个步骤。第一个确定每个值的最小时间

          SELECT style, MIN(time) time
FROM playertimes
GROUP BY style

第二步获取与该时间相对应的实际playertime行。

    SELECT p.style, s.time, p.auth
FROM playertimes p
JOIN (
SELECT style, MIN(time) time
FROM playertimes
GROUP BY style
) s ON p.style = s.style AND p.time = s.time

最后,您可以将该批处理加入到您的 users 表中,将您的 auth 列转变为 name 列。

    SELECT p.style, s.time, u.name
FROM playertimes p
JOIN (
SELECT style, MIN(time) time
FROM playertimes
GROUP BY style
) s ON p.style = s.style AND p.time = s.time
JOIN users.u ON p.auth = u.auth

当然,一旦您有了一个有效的查询,您就可以向其中添加一个 WHERE 子句,就像这样。

    WHERE p.map = 'some constant'

关于mysql - 如何将 DISTINCT 与 JOIN 结合使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36239374/

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