gpt4 book ai didi

mysql - 有没有办法限制表中返回唯一值的次数?

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

作为前言,我们的服务器似乎运行 5.5.56-MariaDB。

举例来说,我目前可以返回如下数据:

数据_|_数量
00001 | 1000
00001 | 900
00001 | 800
00001 | 700
00002 | 600
00002 | 500
00002 | 400
00003 | 300
00003 | 200
00003 | 100

使用其他表中的组、计数和联接可以相当轻松地提取数据和数量值。但是,我尝试只返回提取的每条数据中的两个最高数量值 - 因此实际上,我希望结果更像是这样:

数据_|_数量
00001 | 1000
00001 | 900
00002 | 600
00002 | 500
00003 | 300
00003 | 200

这些值没有改变,我只是没有返回与我无关的数据。我一直在摆弄嵌套表、计数、组以及其他我能想到的东西,但我最接近的是只返回最高值,这不符合我的需求。

我真的很困惑如何继续这里,而且我似乎找不到任何其他人需要类似的数据返回,所以如果有人可以提供任何指导,我会非常乐意欣赏它。

非常感谢。

最佳答案

如果您使用的是 MySQL 8+,则可以在此处使用 ROW_NUMBER:

SELECT Data, Quantity
FROM
(
SELECT *, ROW_NUMBER() OVER (PARTITION BY Data ORDER BY Quantity DESC) rn
FROM yourTable
) t
WHERE
rn <= 2
ORDER BY
Data,
Quantity DESC;

在早期版本的 MySQL 中,可以使用用户变量来模拟行号,但需要更多代码。如果您长期需要此类查询,请考虑升级。

关于mysql - 有没有办法限制表中返回唯一值的次数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59049536/

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