gpt4 book ai didi

mysql - 获取最旧的 n 行,但不超过 x 列中具有相同值的行

转载 作者:太空宇宙 更新时间:2023-11-03 11:34:07 25 4
gpt4 key购买 nike

我有一个简单的表格

CREATE TABLE `example` (
`id` int(12) NOT NULL,
`food` varchar(250) NOT NULL
);

有以下数据

INSERT INTO `example` (`id`, `food`) VALUES
(1, 'apple'),
(2, 'apple'),
(3, 'apple'),
(4, 'apple'),
(5, 'apple'),
(6, 'apple'),
(7, 'apple'),
(8, 'banana'),
(9, 'banana'),
(10, 'potato'),
(11, 'potato'),
(12, 'potato'),
(13, 'banana'),
(14, 'banana'),
(15, 'banana');

我想得到最早的10行

SELECT *
FROM example
ORDER BY id ASC
LIMIT 10

但是我不想得到超过 5 行的 food 具有相同的值。

我当前的查询收到 7 个苹果(比我想要的多)、2 个香蕉和 1 个土 bean 。在提供的数据中,我想收到 5 个苹果、2 个香蕉和 3 个土 bean 。

我怎样才能做到这一点?

更新:

SQL Group BY, Top N Items for each Group不是重复的,因为它涉及不同的数据库。特别是,GROUP BY 在 sql-server 中的工作方式与在 MySQL 中不同

最佳答案

您可以为每种食物添加一个计数(反向)。 . .使用变量或相关子查询。这将使用后者:

select t.*
from (select t.*,
(select count(*) from example t2 where t2.food = t.food and t2.id >= t.id) as seqnum
from example t
) t
where seqnum <= 5
order by id desc
limit 10;

关于mysql - 获取最旧的 n 行,但不超过 x 列中具有相同值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47359237/

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