gpt4 book ai didi

php - 从 mysql 数据库中提取数据,其中用户有多行,但查找具有两个最大值的行

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

我有一个名为leaders的表。其中我有iduseridbmidrepsroundsts。基本上,我需要将轮数最多的前十名唯一用户从表中剔除。现在,每次有人输入他们的 reps 时,rounds 都会作为一对,因此某人可能有 12 rounds 13 reps 所以如果这是他们的最大值并且位于所有用户的前十名之内,那么我需要提取该信息以及他们相应的代表。我以为我有这个,但它实际上是从不同的行拉出他们的 max rounds 和他们的 max reps 。我所拥有的如下。

 SELECT max(l.rounds) as rounds, l.reps, m.name, l.userid 
from leaders l
inner join members m on m.id = l.userid
where m.genre = 'male' and l.bmid = 1
group by l.userid
order by rounds desc,reps desc

join 用于members 表以获取有关它们的一些信息。

最佳答案

我猜你需要一个子查询来实现这一点。看看这个:

How to select the first/least/max row per group in SQL

编辑:试试这个代码:http://sqlfiddle.com/#!2/8bb81/3

CREATE TABLE `leaders` (
`id` int(11) AUTO_INCREMENT,
`userid` int(11),
`rounds` int(11),
`reps` int(11),
PRIMARY KEY (`id`)
);

INSERT INTO `leaders` (userid, rounds, reps) VALUES
(1, 5, 3), (1, 7, 2), (1, 7, 1), (1, 7, 8),
(2, 7, 6), (2, 7, 9), (2, 4, 3),
(3, 7, 2), (3, 3, 5),
(4, 8, 9);

SELECT
userid,
MAX(rounds) AS max_rounds, (
SELECT MIN(reps)
FROM leaders l2
WHERE l2.userid = l1.userid AND l2.rounds <> l1.rounds
) AS min_reps
FROM leaders l1
GROUP BY userid
ORDER BY max_rounds DESC, min_reps ASC;

关于php - 从 mysql 数据库中提取数据,其中用户有多行,但查找具有两个最大值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12771069/

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