我有三张桌子,我需要所有人的不同数据。可悲的是我也需要能够提取最新的行。这可能在一个快速的MySQL查询?
这里是我的表:
消息:我只是存储在表的内部邮件的内容,因为一个文本可以被发送给多个用户
+------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+------------------+------+-----+---------+----------------+
| message_id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| content | varchar(255) | NO | | 0 | |
+------------+------------------+------+-----+---------+----------------+
对话:这表格仅反映两个用户之间的单个对话。
+-----------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+------------------+------+-----+---------+----------------+
| partner_id | int(10) unsigned | NO | MUL | NULL | |
| conversation_id | int(10) unsigned | NO | PRI | NULL | auto_increment |
| expedition_id | int(11) | NO | | NULL | |
| active | tinyint(4) | NO | | 1 | |
+-----------------+------------------+------+-----+---------+----------------+
conversation_messages:此表存储的实际消息中的信息交换。
+-----------------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+------------------+------+-----+---------+-------+
| message_id | int(11) unsigned | NO | PRI | NULL | |
| receiver_id | int(11) unsigned | NO | PRI | NULL | |
| conversation_id | int(11) unsigned | NO | MUL | NULL | |
| status | tinyint(4) | NO | | NULL | |
| timestamp | datetime | YES | | NULL | |
+-----------------+------------------+------+-----+---------+-------+
我想现在要做的是选择每个会话中的最新消息,并从此消息中获取内容。 (这听起来很简单,但它没有找到一个简单的解决方案)。我试过如下:
SELECT max(c_m.message_id), m.content, c_m.`status`
FROM expedition_conversations e_c, conversation_messages c_m
INNER JOIN messages m ON m.message_id = c_m.message_id
WHERE e_c.expedition_id = 1 AND (c_m.conversation_id = e_c.conversation_id)
GROUP BY c_m.conversation_id;
可悲的是,因为GROUP BY
内部似乎选择了第一个插排的大部分时间中,content
我选择从messages
表是错误的,而从conversation_messages
选择message_id
是正确的。
任何想法如何在一个查询中执行此操作?如果你有任何改变表格结构的建议,我也会很感激。
在此先感谢。
您使用的是哪个版本的mysql? – Bohemian 2015-03-08 21:34:25
版本5.6.19。 – puelo 2015-03-08 21:36:33