gpt4 book ai didi

mysql - 获取每个 game_index 的前 3 个条目

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

我有一个名为 source 的(简化的)表:

game_index  int,
rating int,
attributes varchar(42)

现在我正在寻找一个选择命令,它可以提取每个游戏 ( rating ) 的前 3 条记录 ( game_index )。我想将结果存储到另一个表中(称为 max ,相同的表布局)。因此可以使用多个 SQL 命令。

没有game_index这很容易:

INSERT INTO max
SELECT * FROM source
ORDER BY rating DESC LIMIT 3

如何将其与 GROUP BY game_index 结合起来?有什么想法吗?

可以添加额外的表成员或临时表。

最佳答案

在 MySQL 8+ 中,您会这样做:

 INSERT INTO max (. . . )  -- list the columns here
SELECT . . . -- list the columns here
FROM (SELECT s.*,
ROW_NUMBER() OVER (PARTITION BY game_index ORDER BY rating DESC) as seqnum
FROM source s
) s
WHERE seqnum <= 3;

这在早期版本中比较困难。如果评级是唯一的,一种有效的方法是:

INSERT INTO max ( . . . )  -- list columns here
SELECT . . .
FROM source s
WHERE s.rating >= ANY (SELECT s2.rating
FROM source s2
WHERE s2.game_index = s.game_index
ORDER BY s2.rating DESC
LIMIT 1 OFFSET 2
);

关于mysql - 获取每个 game_index 的前 3 个条目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55542359/

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