2014-10-08 28 views
1

我有一個名爲「news_box」的表。 有3個字段。 「channel_id」,「news_id」,「閱讀」如何通過在MySQL表中對一個表中的項目進行分組來獲取有限的行

channel_id和news_id一起是主鍵。

數據的樣本可以這樣:

channel_id | news_id | read 
-----------|---------|----- 
1   | 1  | 0 
1   | 2  | 0 
2   | 3  | 0 
3   | 4  | 0 
2   | 5  | 0 
3   | 6  | 0 
3   | 7  | 0 
3   | 8  | 0 
3   | 9  | 0 
1   | 10  | 0 
1   | 11  | 0 
1   | 12  | 0 
2   | 13  | 0 
3   | 14  | 0 
2   | 15  | 0 
3   | 16  | 0 
3   | 17  | 0 
3   | 18  | 0 
3   | 19  | 0 
1   | 20  | 0 

現在我想第3行 「news_id」 每每個 「CHANNEL_ID」 的。 「news_id」和「channel_id」加入自我表格。結果

樣品可以這樣:

channel_id | news_id | read 
-----------|---------|----- 
1   | 1  | 0 
1   | 2  | 0 
2   | 3  | 0 
3   | 4  | 0 
2   | 5  | 0 
3   | 6  | 0 
3   | 7  | 0 
1   | 10  | 0 
2   | 13  | 0 

最好的問候。

回答

2

回答:

set @num := 0, @group := 0; 

select channel_id, `news_id`, `read` 
from 
(
    select channel_id, `news_id`, `read`, 
     @num := if(@group = `channel_id`, @num + 1, 1) as row_number, 
     @group := `channel_id` as dummy 
    from news_box 
    order by `channel_id` 
) as x where x.row_number <= 3; 
相關問題