鍍金池/ 問答/數(shù)據(jù)庫/ mysql子查詢的一個問題

mysql子查詢的一個問題

SELECT * FROM devstatus ORDER BY inserttime desc 此查詢獲得的是

clipboard.png

然后把這條語句作為子查詢語句 按ip進行分組 代碼如下
SELECT T.ip,T.memorySize,T.memoryFree,T.storageSize,T.storageFree,T.processList,T.processNumber,T.CPULoad,T.insertTime FROM (SELECT * FROM devstatus ORDER BY inserttime desc) AS T GROUP BY T.ip

獲取的數(shù)據(jù)為

clipboard.png

說明一下 獲取的不是最新的 這是為啥? 有大牛幫忙解決一下 萬分感謝!?。?/p>

回答
編輯回答
淚染裳

5.7的吧?sql解析規(guī)則有些優(yōu)化,這樣寫不行了
改成子查詢里面加個limit 99999或者子查詢取出最新time和ip然后跟原表關聯(lián)查詢
sql我就不寫了

2018年2月4日 06:24
編輯回答
入她眼

from 把子查詢的結果作為 外邊查詢的條件使用,外邊的查詢沒有order by?

2018年3月15日 11:42
編輯回答
溫衫

不是最新的話,那是因為gruop by的原因,想要最近的話,加一個order by time asc

2018年6月8日 17:40
編輯回答
神經(jīng)質

這和 SQL 的執(zhí)行順序有關,GROUP BY 會比 ORDER BY 優(yōu)先執(zhí)行,而 GROUP BY 是正序排序的,所以第 2 張截圖里 192.168.0.108 才會排在 192.168.0.1081 之前,此時內部的 ORDER BY 是不生效的。

SQL 語句可做如下修改:

SELECT  *, max(inserttime) as max_insert_time FROM devstatus
    GROUP BY(ip)
    ORDER BY max_insert_time DESC;

關于 SQL 執(zhí)行順序的問題,可以參考:SQL Select語句完整的執(zhí)行順序

2017年4月23日 03:36