0

我有一张桌子,像这样:

表新闻

Id   Name   Other_Columns
-------------------------
1    A       data 1
2    A       data 2
3    A       data 3
4    B       data 4
5    B       data 5
6    C       data 6

我需要检索这样的东西

Group A
----------
data 1
data 2
data 3

Group B
----------
data 4
data 5

Group C
----------
data 6

有人可以帮我处理 MySql 语句吗?

4

3 回答 3

0

那应该这样做:

select asdf.Name, asdf.Other_Columns from (
select
if(@prev != q.Name, @rownum:=1, @rownum:=@rownum+1) as rownumber, @prev:=q.Name, q.*
from (
select
Name,
Other_Columns
from
yourTable yt
, (select @rownum:=0, @prev:='') r
order by Id, Name, Other_Columns
)q
)asdf 
where asdf.rownumber <= 5

这将为您提供最新的 5 个。如上所述,格式化数据是在表示层中完成的。

于 2012-09-04T10:26:04.400 回答
0

这很简单。查询将如下所示:

A组:

SELECT Other_Columns FROM news WHERE Name = 'A';

将“B”和“C”放在“A”的位置,以获得其他组。

于 2012-09-04T10:17:03.703 回答
0

目前还不清楚你真正想要什么,但这会做吗?

select "Group A"
union all
select Other_Columns from news where name = "A"
union all
select "Group B"
union all
select Other_Columns from news where name = "B"
union all
select "Group C"
union all
select Other_Columns from news where name = "C"
于 2012-09-04T10:13:49.113 回答