1

我想限制每个类别的查询,我在这里看到了很多相同的主题,但太复杂了,所以我会问另一个。

例如我有

id       title        category
1        one          number
2        two          number
3        three        number  
4        four         number
5        a            letter
6        b            letter
7        c            letter

我想限制我的查询,假设每个类别有 2 个,所以我的输出如下

one
two

a
b
4

3 回答 3

1

我从 diff 主题中得到了答案,我会在这里发布给其他会遇到同样问题的人

SELECT * FROM (
    SELECT
       table.*,
       @rn := CASE WHEN @category=category THEN @rn + 1 ELSE 1 END AS rn,
       @category := category
    FROM table, (SELECT @rn := 0, @category := NULL) AS vars        
    ORDER BY category
) AS T1
WHERE rn <= 2
于 2012-07-25T12:39:06.387 回答
0

使用此链接创建,那里有解释。这也适用于大量类别,但请注意,如果没有定义正确的键,它可能会变得非常慢。

set @num := 0, @category := '';

select title, category, @num := if(@category = category, @num +1, 1) as row_number,
@category := category as dummy

from test
group by category, title
having row_number <=2;
于 2012-07-25T11:07:30.350 回答
-3

告诉我我是否正确 -
那是 sql -

SELECT * FROM `categories` ORDER BY `id` ASC LIMIT 0,2 

我所做的是:选择类别表中的所有项目并按 id 行对其进行排序,仅将其限制为两个结果并从开始排序

于 2012-07-25T10:44:59.970 回答