2012-09-04 4 views
0

나는이 하나 개의 테이블이 같은 :이각 그룹의 최신 기록을 가져 오는

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

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

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

수있는 사람의 도움이 뭔가를 검색해야

표 뉴스

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 

그리고 MySql 문을 사용하고 있습니까?

+0

예, 간단합니다 : 'SELECT * FROM yourTable'. MySQL은 데이터 형식을 지정하지 않습니다. 그것은 프리젠 테이션 레이어에서 이루어집니다. – fancyPants

+0

정말요? 나는 이것과 mysql과 같은 것을 보았다고 생각했다. – Alex

+0

당신이 그것을 보았 기 때문에 그것이 최선의 방법이라는 것을 의미하지는 않는다. – fancyPants

답변

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" 
+0

모든 데이터를 이름별로 그룹화 한 다음 각 그룹에서 5 개의 최신 항목을 가져와야합니다. – Alex

0

이것은 매우 간단합니다. 그룹 A에 대한

:

SELECT Other_Columns FROM news WHERE Name = 'A'; 

장소 'B'와 'A'대신에 'C', 다른 그룹을 얻을 수있는 쿼리는 같은 것입니다. 그것을해야

+1

예,하지만 한 문장으로해야합니다. 그리고 이름은 심지어 3 (A, B, C)뿐 아니라 10 개 이상일 수 있습니다. ;) – Alex

0

는 :

select asdf.Name, asdf.Other_Columns from (
select 
if(@prev != q.Name, @rownum:=1, @rownum:[email protected]+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를 얻을 것이다. 데이터 포맷은 언급 한 것처럼 프리젠 테이션 레이어에서 이루어집니다.

+0

감사합니다 !!! :) 그것은 내가 찾고있는 정확하게 것이다! – Alex

+0

@Alex 기쁜 마음으로 도와 드리겠습니다. 이 사이트의 "베스트 프랙티스"는 답변의 왼쪽에있는 체크를 클릭하여 답변을 수락하는 것입니다. 이렇게하면 다른 사람들은 이미 해결 된 것을 볼 수 있기 때문에 시간 낭비하지 않고 응답자에게 감사 할 수있는 좋은 방법입니다. :) – fancyPants

관련 문제