我有三張桌子,我需要所有人的不同數據。可悲的是我也需要能夠提取最新的行。這可能在一個快速的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