我正在尝试创建SQL,用于检索论坛线程的最新帖子列表。
我有以下代码:
SELECT
item_discuss_thread_id
, item_discuss_post_title
, COUNT(item_discuss_thread_id) AS nb_posts
FROM
item_discuss_posts
GROUP BY
item_discuss_thread_id
item_discuss_post_title
将只获得组中的第一行。
我想知道是否有办法解决这个问题?如果没有,解决问题的最佳方法是什么。。。只有子查询?
谢谢
帕维尔
更新:
请注意,我需要所有线程,限制1不能解决问题。
此外,ORDER BY不是一个选项,因为GROUP BY仍将从GROUP中选择第一条记录。
这不是一个看似简单的问题。
更新:
我真的想尽量避免使用子查询,或者如果这样做的话——尽可能地使用它。
我现在带的是这样的东西:
SELECT
ordered_by_date.item_discuss_thread_id
, item_discuss_post_title
, COUNT(item_discuss_thread_id) AS nb_posts
FROM
(
SELECT
item_discuss_thread_id
, item_discuss_post_title
FROM
item_discuss_posts
ORDER BY
item_discuss_post_datetime DESC
) AS ordered_by_date
GROUP BY
item_discuss_thread_id
id, select_type, table, type, possible_keys, key, key_len, ref, rows, Extra
1, PRIMARY, <derived2>, ALL, \N, \N, \N, \N, 20, Using temporary; Using filesort
2, DERIVED, item_discuss_posts, index, \N, item_discuss_post_datetime, 8, \N, 20,