gpt4 book ai didi

MySQL 选取前十条没有重复 uid 的记录

转载 作者:行者123 更新时间:2023-11-29 00:33:26 33 4
gpt4 key购买 nike

我有下表 (user_record),其中包含数百万行:

no    uid   s
================
1 a 999
2 b 899
3 c 1234
4 a 1322
5 b 933
-----------------

uid可以重复。我需要的是显示前十条记录(需要包括uid和s),没有重复的uid order by s(desc)。我可以通过以下 SQL 语句中的两个步骤来完成此操作:

SELECT distinct(uid) FROM user_record ORDER BY s DESC LIMIT 10
SELECT uid,s FROM user_record WHERE uid IN(Just Results)

我只是想知道在一条语句中是否有更有效的方法?

非常感谢任何帮助。

ps:我还有如下SQL语句:

 select * from(select uid,s from user_record order by s desc) as tb group by tb.uid order by tb.s desc limit 10

但是速度很慢

最佳答案

最简单的方法是使用 MAX() 为每个 uid 获取最高的 s 并根据最高的 对其进行排序>s.

SELECT  uid, MAX(s) max_s
FROM TableName
GROUP BY uid
ORDER BY max_s DESC
LIMIT 10

上面查询的缺点是它不处理重复项,例如有多个 uid 具有相同的 s 并且结果是最高的值(value)。如果你想得到最高值的 s 重复,你可以通过在子查询上计算它并将结果连接到原始表来实现。

SELECT  a.*
FROM tableName a
INNER JOIN
(
SELECT DISTINCT s
FROM TableName
ORDER BY s DESC
LIMIT 10
) b ON a.s = b.s
ORDER BY s DESC

关于MySQL 选取前十条没有重复 uid 的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15479100/

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