UNION ALL和order by 的關系,group by 和字段的關系,以及MAX函數


1、UNION ALL 和 ORDER BY的關系

  • 默認是對 UNION ALL 的結果進行排序

@堅果雲附件 UNION ALL 排序問題.xmind - 堅果雲

2、GROUP BY 和 ORDER BY的關系

參考:mysql group by 排序問題_悶聲發大財 - CSDN 博客

原始數據:

2.1、ORDER BY 默認是對 GROUP BY 的結果進行排序

結果如下:無論根據什么字段進行排序,排序的數據ID都為1、2。表示GROUP BY選取的結果始終是一致的,ORDER BY 只對該結果排序。

2.2、MAX()函數只取該列的最大值,並非最大值對應的一行。

  • 如果只是取某個字段種的最大或者最小值,可以使用MAX()函數。同時該字段可以不必出現在GROUP BY 之后。
  • 為什么不是最大值對應的一行,因為10和13對應的ID分別為9和12

-

原理:相當於是在 GROUP BY 后選出本組的最大,對分組沒有起到任何影響!

2.3、使用子查詢,完美解決

注:MYSQL5.7 版本的子查詢的排序需要加 LIMIT 排序才有效

如下:

  • 第二條沒生效,第三條生效是因為Mysql版本問題,請知悉。

2.4 子查詢的替代方案

方案一:

mysql group by 組內排序方法_傲雪星楓 - CSDN 博客

如果我們是想找到某一行對應的數據。那么可以分多步執行

  • 1、使用MAX函數,找到需要的行的ID;
  • 2、使用right join 上一步的數據,就得到了最終結果;


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM