2012-03-12 7 views
-1

나는 items이라는 테이블을 가지고있다. 이 표에는 많은 열이 있습니다. 열 중 하나를 '소스'라고합니다. 내가하고 싶은 것은 테이블에서 레코드를 선택하는 것입니다. '소스'열 모두가 다른 조건으로 최신 5 레코드를 선택하고 싶습니다.mysql select issue

SELECT DISTINCT SOURCE from items order by time DESC LIMIT 5 

하지만 나는 그것이 작동하지 않습니다 더 열을 포함 할 때 나는 전체 기록뿐만 아니라 소스가 필요합니다

나는 다음 시도했다.

나는이 시도 :

SELECT * FROM items WHERE item_section='sp_500' GROUP BY source ORDER BY time DESC LIMIT 3 

을하지만

+0

난이 너무 어렵다는 사실에 놀란다, 난 당신이 사용중인 테이블의 일례를 게시 할 수 – user557862

+0

뭔가 빠진해야합니까? – XepterX

답변

2

까다로운 :

Insert into items values(ID,SOURCE, CREATED) 

당신이 할 수있는 최신 다섯 개 기록을 선택.

시도해보십시오.

SELECT items.* 
    FROM items 
    INNER JOIN 
    (SELECT source, max(time) maxtime 
     FROM bbc 
     GROUP BY source 
     ORDER BY max(time) DESC 
     LIMIT 5 
    ) s 
ON items.source = s.source and items.time = maxtime 
+0

대답은이 줄에 있습니다. 왜 SQL이 그렇게 힘들습니까? 권자 – user557862

0

그냥 이렇게 최신 기록을 나에게 제공하지 않습니다 :

SELECT * FROM items WHERE source IN (
    SELECT DISTINCT source FROM items ORDER BY time DESC LIMIT 5 
) 
+0

동일한 소스 이름에 대해 둘 이상의 열을 반환하므로 결과가 5보다 클 수 있습니다. –

+0

은 다음 중 하나가됩니다. 경고 : mysql_fetch_array() : 제공된 인수가/home/market2d/public_html/common/linkwriter_front에 유효한 MySQL 결과 리소스가 아닙니다. .php on line 12 당신이 썼던 것이 좋은 것으로 보입니다. – user557862

0

시도이

SELECT * FROM items as itm,(SELECT pk,DISTINCT source as src FROM items ORDER BY time DESC LIMIT 5) as temp WHERE itm.pk = temp.pk 

pk이 (가) 기본 카테고리입니다. key

0

최신 5 개의 레코드 선택을 보장하려면 "created"이라는 새 열을 추가하고 레코드 생성의 time()을 삽입하는 것이 좋습니다.

예 :

SELECT source, Max(created) FROM items GROUP By created LIMIT 5