Выберите строки после строки с определенным значением - PullRequest
4 голосов
/ 26 февраля 2011

Привет еще раз, я все еще изучаю Queries и прочее, поэтому прошу прощения за все частые вопросы по sql 8)

В любом случае я пытаюсь выбрать строки после определенного значения. Не понимаешь? Хорошо, вот как это выглядит на самом деле.

Таблица: сообщения

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

Если идентификатор сообщения равен 9, он имеет значение «1» в столбце uid_sent_deleted. Я пытаюсь выбрать строки после последней строки, которая имеет значение «1» в столбце uid_sent_deleted.

вот 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 ]

3 голосов
/ 26 февраля 2011
... WHERE thread_id = 1 AND id > 
     (SELECT MAX(id) FROM messages WHERE uid_sent_deleted = 1)
1 голос
/ 26 февраля 2011
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
0 голосов
/ 26 февраля 2011

Подзапрос может сработать, вы выбираете MAX (message_id) WHERE uid_sent_deleted = 1, а затем присоединяетесь ... немного смутно по синтаксису.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...