我有一个 MySql 表,其中有两列,即类别和名称。我有 4 个唯一的类别值,并且该表中有数千条记录。但所有这些记录都属于表中的 4 个类别中的任何一个。
现在,我想要的是作为输出,我应该得到每个类别的 2 个结果,即第一个类别的 2 个结果,然后是下一个类别的 2 个结果,依此类推。
是否可以使用单个查询?
我有一个 MySql 表,其中有两列,即类别和名称。我有 4 个唯一的类别值,并且该表中有数千条记录。但所有这些记录都属于表中的 4 个类别中的任何一个。
现在,我想要的是作为输出,我应该得到每个类别的 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;
那这个呢?
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