首先,對不起我的英語不好......MySQL中的高級JOIN查詢?
我的一個MySQL查詢出現問題。我有兩個表:消息和答覆。 消息表包含一個id,discussion_id,內容和日期字段。答覆表包含一個ID,message_id,內容和日期字段。
我希望對於一個特定的討論,最新的10條消息及其答覆被提取。消息需要在最後一個回覆中排序,回覆需要首先排序。
(Facebook一樣)
我是這樣做的:
SELECT * FROM messages WHERE discussion_id = 'test' ORDER BY date DESC;
,然後使用PHP foreach循環
SELECT * FROM replies WHERE message_id = 'test' ORDER BY date ASC;
但是,如果我會用我所11個查詢,這並不理想。我正在考慮加入或聯合,但如果我這樣做,答覆和消息是不可分開的。該列表按照answers.date排序,但回覆和他們的父母消息不再在一起。我正在使用:
SELECT * FROM messages LEFT JOIN replies ON messages.id = replies.message_id WHERE discussion_id='4cc43b40586b6' ORDER BY replies.date DESC
是否可以爲此任務進行一次查詢?
我這樣做的時候,我總是在消息表中的列與最後回覆日期(或者如果數據很簡單,只是一個表的所有郵件和回覆)。那麼很容易先排序,然後再排序。僅供參考,它可能會爲您在插入/更新期間優化這一點而不僅僅是獲取時節省一些麻煩。 – 2010-11-29 15:31:25