我想限制每个类别的查询,我在这里看到了很多相同的主题但过于复杂,所以我会问另一个。
例如我有
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
答案 0 :(得分: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
答案 1 :(得分:0)
使用this link创建,那里有一个解释。这也适用于大量类别,但要注意,如果没有定义正确的密钥,它可能变得非常。
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;
答案 2 :(得分:-3)
告诉我,如果我找对你 -
那是sql -
SELECT * FROM `categories` ORDER BY `id` ASC LIMIT 0,2
我做的是:选择类别表中的所有项目并按id行排序,仅限两个结果并从开始订购