试图获取一个独特的论坛帖子列表,而不是工作

时间:2013-10-06 10:52:22

标签: mysql sql

快速浏览,我正在尝试从论坛表格中获取最后5个论坛帖子,以便在RHS列中向用户显示。

我还想要的是这个列表应该只显示独特的论坛帖子标题(有时候用户在多个论坛上发布相同的帖子,我不希望我的RHS盒子显示可能相同的5个“标题”,即使他们在不同的论坛类别)。

但是这个sql工作并不安静...它完全跳过任何多次具有相同标题的论坛帖子,我仍然想要多个标题条目,但只有一个。

SELECT 
    f.id,
    f.title,  
    fm.url_path
FROM forum_posts AS f
INNER JOIN forum_master AS fm 
    ON f.forum_id = fm.id 
WHERE deleted = 0
    AND blacklisted = 0
GROUP BY f.title
ORDER BY f.id DESC 
LIMIT 5

例如,请考虑此表

id  title
1   a
2   b
3   c
4   d
5   e
6   f
7   f

我想要返回id的7,5,4,3,2。我仍然想要一个标题为f的实例,但只有一个。我的代码似乎是返回1-5(完全跳过id 6-7,因为它们具有相同的标题)。

任何想法????

1 个答案:

答案 0 :(得分:0)

尝试我在这里的嵌套查询:http://sqlfiddle.com/#!2/758b3e/11

SELECT
  f.title,
  f.id,
  fm.url_path
FROM forum_posts AS f
INNER JOIN forum_master AS fm 
ON f.forum_id = fm.id 
WHERE deleted = 0
AND blacklisted = 0
AND (SELECT id
     FROM forum_posts
     WHERE title = f.title
     ORDER BY id DESC
     LIMIT 1) = f.id
ORDER BY f.id DESC
LIMIT 5

而不是使用group by(我相信在这种情况下会在Oracle中失败 - 无法使用多个ID进行分组)我在WHERE子句中将id过滤为单一可能性,这会删除重复项并且最高ID。按查询分组抓取了最低的ID,所以即使它正在运行,它也不是您正在寻找的解决方案。