Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/57.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 - Fatal编程技术网

mysql子查询限制也限制了父查询

mysql子查询限制也限制了父查询,mysql,Mysql,我想检索所有记录从论坛上的1个最新的回复线程。 问题是限制也会影响父查询,导致只返回1个线程 我们将非常感谢您的帮助,提前感谢您 例如,您可能需要对子查询进行分组 此外,内部联接只会产生一个联接条件在两个表中都匹配的记录:也就是说,没有回复的帖子将被排除在外 如果希望保留一个表中的记录,即使连接条件不匹配,也需要外部连接;在这种情况下,左外部联接(因此联接的左操作数中的记录始终包含在结果集中) 有关更多信息,请参阅 因此: SELECT * FROM forum_posts AS post

我想检索所有记录从论坛上的1个最新的回复线程。 问题是限制也会影响父查询,导致只返回1个线程

我们将非常感谢您的帮助,提前感谢您

  • 例如,您可能需要对子查询进行分组

  • 此外,内部联接只会产生一个联接条件在两个表中都匹配的记录:也就是说,没有回复的帖子将被排除在外

    如果希望保留一个表中的记录,即使连接条件不匹配,也需要外部连接;在这种情况下,左外部联接(因此联接的左操作数中的记录始终包含在结果集中)

    有关更多信息,请参阅

  • 因此:

    SELECT * FROM forum_posts AS post 
    
    INNER JOIN( SELECT parent AS rparent, author AS rauthor, MAX(created_at( AS rdate FROM forum_replies) AS reply
    ON post.id = reply.rparent 
    
    或者,在联接后执行分组:

    SELECT * FROM forum_posts AS post LEFT JOIN (
      SELECT   parent          AS rparent
        ,      author          AS rauthor
        ,      MAX(created_at) AS rdate
      FROM     forum_replies
      GROUP BY parent
    ) AS reply ON post.id = reply.rparent
    

    在sqlfriddle上发布show create table和example数据,并在这里发布链接。我看不出其中有任何限制。您是复制了这段代码还是重新键入了它?您有一个输入错误-MAX应该在末尾有一个左括号。如果这里的问题是没有回复的帖子被不希望地从您的结果集中排除,那么您应该将
    内部连接
    更改为
    左连接
    。有关更多信息,请参阅。非常棒的eggyal,工作非常完美!将其作为解决方案发布,我会将其标记为已解决。
    SELECT      post.*
      ,         reply.parent          AS rparent
      ,         reply.author          AS rauthor
      ,         MAX(reply.created_at) AS rdate
    FROM        forum_posts           AS post
      LEFT JOIN forum_replies         AS reply ON reply.parent = post.id
    GROUP BY    post.id