2012-01-11 3 views
1

사용자로부터 최신 게시물을 선택하고 싶습니다. 가장 효율적인 방법을 찾고 있습니다. MYSQL 테이블에서 최신 게시물을 선택하십시오.

id ToID FromID Post  State Date 
1 1  1  Hey   0  1325993600 
2 1  6  okay yeah 0  1325993615 
3 1  2  again  0  1325994600 
4 6  6  yeah2  0  1325995615 

그래서이 상기 예에서이 ID를 반환 소식 :

$query = mysql_query(" 
        SELECT * 
        FROM posts 
        WHERE toID=fromID 
        GROUP BY fromID 
        ORDER BY date DESC LIMIT 3"); 

테이블 구조 :

현재이 처음 포스트 아닌 마지막 선택 1 및 4.

toID = fromID는 상태 메시지 인 게시물을 얻는 것입니다. 사용자가 다른 사람이 아닌 자신의 페이지에 뭔가를 게시했습니다.

상태를 업데이트 한 최근 3 명의 사용자로부터 가장 최근 상태를보고 싶습니다. 아이디 것은 여전히 ​​이론적으로 일하는 것이

+0

'toID = fromID'는 무엇인가요? 결과 집합에 영향을 미칠 수 있습니까? –

+0

최근 게시물에 타임 스탬프를 사용해야합니다. –

+0

타임 스탬프가 있지만 아이디는 타임 스탬프와 동일하게 작동합니다. (자동 증가) –

답변

2

는, 내가 "날짜"라는 테이블 구조에 타임 스탬프 필드를 사용하는 것이 좋습니다 및 기본 값으로 "CURRENT_TIMESTAMP"을 사용합니다 ... ID가 변경 결코 것을

제공 이 의지는 한계 그룹화 덕분에 나타나는 잘못된 데이터의 X

또한, 나는 경험 많은 경우, ... 삽입시 기록에이 필드 DESC로

주문 날짜/시간을 자동으로 채울 .. ORDER BY 및 LIMIT을 적용하기 전에 데이터가 올바른지 확인하십시오.

의 user1하는 * 게시물을 얻기 위해

SELECT * FROM posts 
WHERE toID="USER1_ID" 
ORDER BY date DESC LIMIT 3 

만의 고유 사용자 : 사용자 1에 * 게시물을 얻기 위해

SELECT * FROM posts 
WHERE toID=fromID 
ORDER BY date DESC LIMIT 3 

: 그룹화 할 필요가 없습니다 사용자 1의 user1하는 게시물을 얻기 위해

다음 ORDER BY가 적용되기 때문에

SELECT * FROM posts 
WHERE toID="USER1_ID" 
GROUP BY FromID 
ORDER BY date DESC LIMIT 3 

는 Somtimes 당신은 그룹화 된 레코드를 ORDER BY로 정렬되지 않는 문제로 실행됩니다 그룹화 한 후 결과는 해결 방법을 달성하기 위해 ... 적용됩니다

SELECT * FROM (
    SELECT * FROM posts 
    WHERE toID="USER1_ID" 
    ORDER BY date DESC 
) as `derived` GROUP BY FromID LIMIT 3 

가장 최근에 스스로 게시물을 보낸 지난 3 사용자를 효율적으로 활용하려면 다음

SELECT * FROM (
    SELECT * FROM posts 
    WHERE toID=fromID 
    ORDER BY date DESC 
) as `derived` GROUP BY FromID LIMIT 3 
+0

자세한 내용을 추가했습니다 –

+0

각 사용자의 최신 상태를보고 싶습니다.위의 편집 된 게시물을보고 예제로 자세한 내용을 추가했습니다. –

+0

예, 사용자 당 상태는 1 개만 필요하며 각 사용자의 최신 상태 여야합니다. –

0

이 쿼리를 시도합니다.

$query = mysql_query("SELECT * FROM posts WHERE toID=fromID GROUP BY id ORDER BY date DESC LIMIT 3"); 
+1

ID로 그룹화 하시겠습니까? 자동 증가 ID, 그들은 유일하다 ?? – Prof83

관련 문제