簡體   English   中英

SQL左外部聯接影響子查詢順序

[英]SQL Left Outer Join Affecting Sub Query Order

我有一個包含子查詢和許多左外部聯接的查詢。 在我的子查詢中,我按最新的blog_date的記錄排序,並將結果限制為10條記錄。 該子查詢應指示記錄的順序,其他聯接匹配有關該記錄的其他信息,但是,當我在LEFT OUTER JOIN添加時,它會忽略blog_date順序。 這使我相信我要么缺少保持訂單的關鍵要素,要么認為LEFT OUTER JOIN不是要使用的正確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年2月21日):

正確查詢

但是,當我添加第二個左外部blog_date (和其余blog_date )時,看來新順序是按blog_date降序排列,然后按category_name分組。

錯誤的訂單

子查詢的順序對外部查詢的順序沒有影響。 將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 ;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM