gpt4 book ai didi

mysql - 使用查询限制组

转载 作者:可可西里 更新时间:2023-11-01 08:33:40 24 4
gpt4 key购买 nike

请看下面的 SQL Fiddle。

http://sqlfiddle.com/#!2/f7939/3

您将看到我的查询:

SELECT sub.entry_id, sum(jud.stage), sub.category_id, sub.member_group
FROM exp_judging AS jud
LEFT JOIN exp_submissions AS sub ON jud.rel_id = sub.id
WHERE jud.rel_id = jud.rel_id
GROUP BY jud.rel_id
ORDER BY 3 ASC
LIMIT 10

这是将具有相同 rel_id 的所有行加在一起,然后输出它们。

我只需要输出每个类别的前 x 个数字,现在假设每个类别有 3 个。

举个例子,我的 SQL Fiddle 的结果是:

第 1 类:(entry_id 按分数排序)10, 11, 16

第 2 类:13、12、14

我怎样才能做到这一点?

最佳答案

虽然我确定必须有一个更简洁的解决方案,但您可以使用 user defined variables 引入一个 row number 来实现此目的:

SELECT *
FROM (
SELECT *,
@rn:=IF(@prevCat=category_id, @rn + 1,1) rn,
@prevCat:=category_id
FROM (
SELECT sub.entry_id,
sum(jud.stage),
sub.member_group,
sub.category_id
FROM exp_judging AS jud
LEFT JOIN exp_submissions AS sub ON jud.rel_id = sub.id
GROUP BY jud.rel_id
ORDER BY sub.category_id, sum(jud.stage) DESC, sub.entry_id
) T
JOIN (SELECT @rn:=0, @prevCat:=0) T2
) T
WHERE rn <= 3

关于mysql - 使用查询限制组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19227268/

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