天天看點

關于MySQL與SQLLite的Group By排序原理的差別

當我們對一個表的記錄進行group by的時候,在未明确使用sum、min、max等聚合函數的時候,group by 的排序規則,如下對比了mysql和sqllite

大家都知道,group by的時候,資料庫是周遊資料庫表的所有記錄進行比對處理的。

下面的sql目的是為了查詢表中groupid相同的記錄中,最新時間的一條消息,給出mysql和sqllite的語句差別:

mysql語句

sqllite語句

大家注意對比sql可以發現,子查詢最後的order by 中,在mysql中使用 asc,而在sqllite中我們使用 desc

原因就是:mysql在周遊表記錄的時候當發現重複的group字段時,是忽略的。而sqllite是覆寫的。

是以我們為了擷取最晚發送的一條記錄時,在mysql中使用desc,sqllite中使用asc