Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 试图获得一个独特的论坛帖子列表,但不起作用_Mysql_Sql - Fatal编程技术网

Mysql 试图获得一个独特的论坛帖子列表,但不起作用

Mysql 试图获得一个独特的论坛帖子列表,但不起作用,mysql,sql,Mysql,Sql,快速概述,我正在尝试从我的论坛表中获取最后5篇论坛帖子,以便在RHS列中向用户显示 我还希望此列表只显示唯一的论坛帖子标题(有时用户在多个论坛中发布相同的帖子,我不希望我的RHS框显示可能相同的5个“标题”,即使它们位于不同的论坛类别中) 但是这个sql不是安静的工作。。。这是完全跳过任何论坛帖子,有相同的标题多次,我仍然希望多个标题条目,但只有一个 SELECT f.id, f.title, fm.url_path FROM forum_posts AS f IN

快速概述,我正在尝试从我的论坛表中获取最后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
我想把身份证7,5,4,3,2还给你。我仍然想要标题f的一个实例,但只有一个。我的代码似乎返回1-5(完全跳过id 6-7,因为它们具有相同的标题)


有什么想法吗???

试试我这里的嵌套查询:


我没有使用group by(我认为在这种情况下Oracle会失败-不能使用多个id进行分组),而是在WHERE子句中将id筛选为一个可能性,该子句删除重复项并使用最高id。group by查询获取的是最低id,因此,即使它能工作,也不完全是您想要的解决方案。

我只是在SQL fiddle中尝试了这一点,它的行为似乎与您描述的一样。你还可以添加什么来帮助它打破?还是你误解了什么?谢谢拉瑟基81。。。是的,你的小提琴似乎走得不错。嗯,我的密码里一定有小精灵,去调查一下,然后再回复。谢谢你!这真的很奇怪。。。在完成测试和var_转储之后,返回的db结果肯定是跳过具有相同标题的行。我不确定这是否有什么不同,但我使用的是XAMPP(重新启动服务器,仍然存在相同的问题),运行的是MySQL版本5.6.12。如果我把小组中的3个相同的标题拿出来,把它放回去,那3个我都得不到。好的,将我的测试DB表和sql语句的精确副本转储到fiddle(运行MySQL版本5.5.32)中,它将正确返回。看起来我的MySQL版本(5.6.12)就是罪魁祸首。返回不同结果的完全相同的表/数据和sql代码。你认为可能是别的吗?我不确定是否/如何(轻松地)在xampp上更改mysql版本以测试这一理论,而且fiddle也没有我的mysql版本。fiddle处理我的表/数据,在我的xampp应用程序上完全相同,返回不同的结果。那太好了。几乎工作完美。。。如果第一个“多标题”条目被删除或列入黑名单,则不会返回“多标题”结果。只需添加删除/黑名单,其中条款也在子选择,这一切都是完美的!!!非常感谢大家!!!
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