Mysql 选择具有特定值的行之后的行
再说一次,我仍然有很多疑问和问题,所以请原谅我经常问的sql问题8) 无论如何,我试图选择一个特定值之后的行。 不明白?这就是它的实际外观 表:信息Mysql 选择具有特定值的行之后的行,mysql,sql,phpmyadmin,logic,Mysql,Sql,Phpmyadmin,Logic,再说一次,我仍然有很多疑问和问题,所以请原谅我经常问的sql问题8) 无论如何,我试图选择一个特定值之后的行。 不明白?这就是它的实际外观 表:信息 +------------+-----------+---------+-------+---------------------------------------+----------------+------------------+ | message_id | thread_id | user_id | to_id | body
+------------+-----------+---------+-------+---------------------------------------+----------------+------------------+
| 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 |
+------------+-----------+---------+-------+---------------------------------------+----------------+------------------+
如果消息id为9,则在uid\U sent\U deleted列中的值为“1”。
我正在尝试选择uid\u sent\u 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
子查询可能有效,请选择uid\U sent\U deleted=1的MAX(消息\U id),然后加入。。。语法上有点模糊。@Kenny这里不应该有threadid关联吗?
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
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