gpt4 book ai didi

MySQL:WHERE IN 列表的限制结果

转载 作者:可可西里 更新时间:2023-11-01 07:36:28 25 4
gpt4 key购买 nike

假设 my_table 中有数百万条记录。

这是我从列表中提取具有特定名称的行的查询:

SELECT * FROM my_table WHERE Name IN ('name1','name2','name3','name4')

如何限制每个 name1、name2 等的返回结果?以下查询将限制整个结果(到 100)。

SELECT * FROM my_table WHERE Name IN ('name1','name2','name3','name4') LIMIT 100

我需要将每个名称限制为 100 个。

最佳答案

这在 MySQL 中有点痛苦,但最好的方法可能是变量:

select t.*
from (select t.*,
(@rn := if(@n = name, @rn + 1,
if(@n := name, 1, 1)
)
) as rn
from my_table t cross join
(select @n := '', @rn := 0) params
order by name
) t
where rn <= 100;

如果您想将此限制为名称的子集,请将 where 子句添加到子查询。

注意:如果您想选择某些行——例如最旧或最新或最大或最高——只需将第二个键添加到子查询中的order by

关于MySQL:WHERE IN 列表的限制结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44958082/

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