【发布时间】: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