开发者

Select rows after a row with a certain value

Hey again, im still getting a hang of Queries and stuff so please excuse all the frequent sql questions 8)

Anyways im trying to select rows after a certain value. Dont understand? Ok this is how it actually looks.

Table: messages

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

Where the message id is 9, is has the value of '1' in the column uid_sent_deleted. Im trying to select rows after the last row that has a value of '1' in the column uid_sent_deleted.

here is the sql that im currently working with. Thanks for the help!!

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 


... WHERE thread_id = 1 AND id > 
     (SELECT MAX(id) FROM messages WHERE uid_sent_deleted = 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


A subquery might work, you select the MAX(message_id) WHERE uid_sent_deleted=1, then do you join ... little hazy on the syntax.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜