表:PHP的MySQL集團通過獲得最新的記錄,而不是第一個記錄
(`post_id`, `forum_id`, `topic_id`, `post_time`)
(79, 8, 4, '2012-11-19 06:58:08');
(80, 3, 3, '2012-11-19 06:58:42'),
(81, 9, 9, '2012-11-19 06:59:04'),
(82, 11, 6, '2012-11-19 16:05:39'),
(83, 9, 9, '2012-11-19 16:07:46'),
(84, 9, 11, '2012-11-19 16:09:33'),
查詢:
SELECT post_id, forum_id, topic_id FROM posts
GROUP BY topic_id
ORDER BY post_time DESC
LIMIT 5
結果:
[0] => [post_id] => 84 [forum_id] => 9 [topic_id] => 11
[1] => [post_id] => 82 [forum_id] => 11 [topic_id] => 6
[2] => [post_id] => 81 [forum_id] => 9 [topic_id] => 9
[3] => [post_id] => 80 [forum_id] => 3 [topic_id] => 3
[4] => [post_id] => 79 [forum_id] => 8 [topic_id] => 4
問題:
如何重寫查詢,以便我t返回post_id - > 83而不是post_id - > 81?
它們都具有相同的論壇和主題ID,但POST_ID - > 81比POST_ID的舊日期 - > 83.
但似乎集團通過獲得的「第一」的記錄,而不是「最新'一個。
我試圖改變查詢
SELECT post_id, forum_id, topic_id, MAX(post_time)
但同時返回POST_ID 81和83
感謝您的解釋和代碼。兩個查詢都有效。 – shanebp
我用過你第一個查詢,但它在我改變 ...之前沒有工作... WHERE post_time = ... TO ... WHERE post_time IN ...因爲我得到了更多的結果。 –
這是爲什麼這麼麻煩?使用SQL它將只是'選擇*從[表] GROUP BY [列]'選擇最新的,而不是最古老的,似乎合乎邏輯的權利? –