【问题标题】:SQL Left Outer Join Affecting Sub Query OrderSQL左外连接影响子查询顺序
【发布时间】:2017-02-27 00:38:23
【问题描述】:

我有一个包含子查询和许多左外连接的查询。在我的子查询中,我按最近的blog_date 的记录排序,并将结果限制为 10 条记录。这个子查询应该规定记录的顺序,其他连接匹配有关该记录的附加信息,但是,当我添加 LEFT OUTER JOIN 时,它会忽略 blog_date 排序。这使我相信我要么缺少保持排序的关键元素,要么LEFT OUTER JOIN 不是要使用的正确连接。

这是我的完整查询:

SELECT `b`.`blog_id`, `b`.`blog_date`,`b`.`title`, `u`.`user_id`, `u`.`first_name`, `c`.`category_name`, `d`.`discovery_source_name`, `bc`.`comment`, `bf`.`file`
FROM (SELECT * FROM `blog` ORDER BY `blog`.`blog_date` DESC limit 10) `b`
LEFT OUTER JOIN `user` `u` ON `b`.`user_id` = `u`.`user_id` AND `u`.`organization_id` = 1
LEFT OUTER JOIN `category` `c` ON `b`.`category_id` = `c`.`category_id`
LEFT OUTER JOIN `discovery_source` `d` ON `b`.`discovery_source_id` = `d`.`discovery_source_id`
LEFT OUTER JOIN `blog_comment` `bc` ON `b`.`blog_id` = `bc`.`blog_id`
LEFT OUTER JOIN `blog_file` `bf` ON `b`.`blog_id` = `bf`.`blog_id`
;

以下是我仅包含第一个连接 (user) 时的结果,记录的顺序正确(2017-02-21 最近):

但是,当我添加第二个左外连接(和剩余的)时,新顺序似乎是降序 blog_date 顺序,但随后按 category_name 分组。

【问题讨论】:

    标签: mysql sql sql-order-by


    【解决方案1】:

    对子查询进行排序对外部查询的顺序没有影响。将 ORDER BY 放在外部查询的末尾。

    SELECT `b`.`blog_id`, `b`.`blog_date`,`b`.`title`, `u`.`user_id`, `u`.`first_name`, `c`.`category_name`, `d`.`discovery_source_name`, `bc`.`comment`, `bf`.`file`
    FROM (SELECT * FROM `blog` ORDER BY `blog`.`blog_date` DESC limit 10) `b`
    LEFT OUTER JOIN `user` `u` ON `b`.`user_id` = `u`.`user_id` AND `u`.`organization_id` = 1
    LEFT OUTER JOIN `category` `c` ON `b`.`category_id` = `c`.`category_id`
    LEFT OUTER JOIN `discovery_source` `d` ON `b`.`discovery_source_id` = `d`.`discovery_source_id`
    LEFT OUTER JOIN `blog_comment` `bc` ON `b`.`blog_id` = `bc`.`blog_id`
    LEFT OUTER JOIN `blog_file` `bf` ON `b`.`blog_id` = `bf`.`blog_id`
    ORDER BY `b`.`blog_date` DESC ;
    

    【讨论】:

      猜你喜欢
      • 2016-10-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-14
      相关资源
      最近更新 更多