2015-02-04 2 views
0

다른 사용자의 10 최신 메시지를 선택MySQL의 :이처럼 보이는 데이터베이스 테이블을

messages_table :

transmitter_ename: varchar(40) 
message:    varchar(600) 
timestampt:   datetime 
read:     boolean 

다른 사용자의 10 최신 메시지를 선택할 수있는 옵션이 있습니까 SQL 문에서?

+0

"SQL 문에서 다른 사용자로부터"- 단일 * SQL 문에서 여러 다른 사용자? 또는 특정 사용자에 대해 10 개의 최신 메시지를 가져 오는 성명? – JimmyB

+0

@HannoBinder 예를 들어 ... 나는 30 명의 다른 사용자로부터 여러 메시지를 가지고 있습니다 ... 그리고 10 명의 다른 사용자로부터 10 개의 최신 메시지를 얻고 싶습니다 ... PHP에서 루프를 프로그램 할 수 있지만 select 문을 사용하여 하나의 테이블에 가져올 수있는 해결책이 있다고 생각했습니다! –

+1

당신은 [이것을 했습니까?] (http://stackoverflow.com/questions/6841605/get-top-1rowrows-each-group) 내게 중복 된 질문처럼 보입니다 –

답변

-1
SELECT 
    * 
FROM 
    (SELECT * FROM messages_table as mt ORDER BY mt.timestampt DESC) AS messages_table 
GROUP BY 
    messages_table.transmitter_ename 
LIMIT 10; 
+0

이것은 완벽하게 작동합니다! 감사 !! : D –

+1

이것은 (GROUP BY 때문에) 각 사용자에 대한 첫 번째 메시지 만 가져 오지 않습니까? –

+0

각 사용자에 대해 임의의 메시지가 표시되며 개발자에게 MySQL이 제공됩니다. 쿼리가 유효한 SQL이 아닙니다. 그것은 MySQL에서 작동하지만 예측할 수없는 결과를 만들어냅니다. [documentation] (http://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html)에서 인용 한 내용 : * "이 경우 서버는 자유롭게 임의의 값을 선택할 수 있습니다. 각 그룹은 동일하지 않으면 선택한 값이 불확실합니다. 아마도 당신이 원하는 것이 아닙니다. "* – axiac

관련 문제