SQL - 查詢某一字段值相同而另一字段值最大的記錄


 

有時需要以某一字段作為分組,篩選每一組的另一字段值最大(或最小)的記錄。例如,有如下表 app,存儲了 app 的 ID、名稱、版本號等信息。現在要篩選出每個 app 版本最大的記錄。

 

方法一

SELECT a.* FROM app a 
WHERE a.app_version = (SELECT MAX(b.app_version) FROM app b WHERE b.app_name = a.app_name) 
ORDER BY a.app_name;

方法二

SELECT a.* FROM app a
WHERE NOT EXISTS(SELECT 1 FROM app b WHERE b.app_name = a.app_name AND b.app_version > a.app_version)
ORDER BY a.app_name;

方法三

SELECT a.* 
FROM app a, (SELECT app_name, MAX(app_version) AS app_version FROM app GROUP BY app_name) b
WHERE a.app_name = b.app_name
AND a.app_version = b.app_version
ORDER BY a.app_name;

方法四

SELECT a.* 
FROM app a INNER JOIN (SELECT app_name, MAX(app_version) AS app_version FROM app GROUP BY app_name) b
ON a.app_name = b.app_name
AND a.app_version = b.app_version
ORDER BY a.app_name;

 


免責聲明!

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



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