當我們對一個表的記錄進行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