gpt4 book ai didi

mysql - SQL左外连接影响子查询顺序

转载 作者:行者123 更新时间:2023-11-29 10:59:40 25 4
gpt4 key购买 nike

我有一个包含子查询和许多左外连接的查询。在我的子查询中,我按最近的记录排序 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 最近):

correct query

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

incorrect order

最佳答案

对子查询进行排序不会影响外部查询的顺序。将 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 ;

关于mysql - SQL左外连接影响子查询顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42476077/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com