我有一个MySql表,它有两列,分别是类别和名称。我有4个独特的类别值,此表中有数千条记录。但是,所有这些记录都属于表中列出的四个类别之一。基于列值获取mysql查询结果
现在,我想要的是,作为输出,我应该得到2个结果的每个类别,即2个结果的第一类,然后2个结果的下一个类别等等。
单个查询可能吗?
我有一个MySql表,它有两列,分别是类别和名称。我有4个独特的类别值,此表中有数千条记录。但是,所有这些记录都属于表中列出的四个类别之一。基于列值获取mysql查询结果
现在,我想要的是,作为输出,我应该得到2个结果的每个类别,即2个结果的第一类,然后2个结果的下一个类别等等。
单个查询可能吗?
set @num := 0, @cat := '';
select category,name
@num := if(@cat = category, @num + 1, 1) as row_number,
@cat := category as dummy
from MyTable
group by cateogry, name
having row_number <= 2;
这就是我要去的地方,但是按分组的方式使用非聚集的聚集...您是否测试了这个?难道它不仅仅是通过组获取行号的第一个条目(除非添加了row_number列)。另外,根据我对海报的提问,应该有一些限制,以防止通过完整的文件。 – DRapp
这是怎么回事?
SELECT * FROM your_table WHERE category = 1 LIMIT 2
UNION
SELECT * FROM your_table WHERE category = 2 LIMIT 2
UNION
SELECT * FROM your_table WHERE category = 3 LIMIT 2
UNION
SELECT * FROM your_table WHERE category = 4 LIMIT 2
你能告诉你的表结构,一些样本数据和你所期望的。你的问题被标记为每个组的最大值,这通常不是一个标准查询,因为它是一个可以用SQL变量完成的迭代过程,但也应该受到限制,所以你不会浏览整个表的内容可能是数百万条记录...只是在最差的情况下,最后30天左右的条目。 – DRapp