2011-02-26 9 views
4

안녕하세요 다시, 여전히 쿼리 및 물건의 요령을 받고 메신저 그래서 8)선택 행 특정 값을 가진 행 다음

는 어쨌든 특정 값 후 행을 선택하려고 메신저 모든 자주 SQL 질문을 용서하시기 바랍니다. 이해 못하겠습니까? 좋아, 이것이 실제로 보이는 방법입니다.

테이블 : 메시지는 메시지 ID가 9 인

+------------+-----------+---------+-------+---------------------------------------+----------------+------------------+ 
| message_id | thread_id | user_id | to_id | body         | message_status | uid_sent_deleted | 
+------------+-----------+---------+-------+---------------------------------------+----------------+------------------+ 
|   1 |   1 |  1 |  7 | How are you bro?      | read   |    1 | 
|   2 |   1 |  7 |  1 | IM good what about you kenny?   | read   |    0 | 
|   3 |   1 |  1 |  7 | Same just chilling how is your sister | read   |    1 | 
|   4 |   1 |  7 |  1 | Shes coool u know just doin great  | read   |    0 | 
|   7 |   1 |  1 |  7 | Thats nice       | read   |    1 | 
|   8 |   1 |  7 |  1 | Yupp         | read   |    0 | 
|   9 |   1 |  1 |  7 | hhahaha        | read   |    1 | 
|   10 |   1 |  7 |  1 | anyways....       | unread   |    0 | 
+------------+-----------+---------+-------+---------------------------------------+----------------+------------------+ 

,되고 uid_sent_deleted 열에 '1'의 값을 갖는다. uid_sent_deleted 열에 '1'값이있는 마지막 행 뒤의 행을 선택하려고합니다.

여기에 현재 작업중인 SQL이 있습니다. 도와 주셔서 감사합니다!! 서브 쿼리가 작동 할 수

SELECT message_id, thread_id, messages.user_id, to_id, body, message_status, uid_sent_deleted 
FROM messages 
INNER JOIN messages_thread ON messages_thread.id = messages.thread_id 
WHERE thread_id =1 
GROUP BY messages.message_id 
ORDER BY message_id ASC 

답변

3
... WHERE thread_id = 1 AND id > 
    (SELECT MAX(id) FROM messages WHERE uid_sent_deleted = 1) 
+0

답변 해 주셔서 감사합니다. – Kenny

+1

@ 케니 어딘가에서 스레드 ID 상관 관계가 있다고 생각하지 않습니까? – RichardTheKiwi

0

, 당신은 uid_sent_deleted 맥스 (MESSAGE_ID) = 1, 다음 구문에 ... 약간 흐릿한 가입 않음을 선택합니다.

1
SELECT message_id, thread_id, messages.user_id, to_id, body, message_status, uid_sent_deleted 
FROM 
    (SELECT thread_id t_id, MAX(message_id) m_id 
    FROM messages 
    WHERE thread_id =1 and uid_sent_deleted = 1 
    GROUP BY thread_id) n 
inner join messages on messages.message_id > n.m_id and messages.thread_id = n.t_id 
INNER JOIN messages_thread ON messages_thread.id = messages.thread_id 
ORDER BY message_id ASC 
LIMIT 1