快速概述,我试图从我的论坛表的最后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,因为它们有相同的标题)。
有什么想法吗?
发布于 2013-10-06 12:56:42
尝试下面的嵌套查询: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进行分组),而是将id过滤到WHERE子句中的一种可能性,删除重复的ID,并使用最高的ID。group by查询获取的ID是最低的,所以即使它正常工作,它也不是您想要的解决方案。
https://stackoverflow.com/questions/19208036
复制相似问题