sql – 选择每个的最大值(Col1,Col2)
发布时间:2020-12-12 16:46:38 所属栏目:MsSql教程 来源:网络整理
导读:让我们假设下表: Name SubName Message TimeUSA MA M1 1USA NY M2 2USA WA M3 3USA MA M4 4USA WA M5 5USA NY M6 6FIN HEL M7 7FIN TAM M8 8FIN HEL M9 9 我想要一个SQL查询,它将返回以下内容: Name SubName Message TimeFIN HEL M9 9FIN TAM M8 8USA NY M6
让我们假设下表:
Name SubName Message Time USA MA M1 1 USA NY M2 2 USA WA M3 3 USA MA M4 4 USA WA M5 5 USA NY M6 6 FIN HEL M7 7 FIN TAM M8 8 FIN HEL M9 9 我想要一个SQL查询,它将返回以下内容: Name SubName Message Time FIN HEL M9 9 FIN TAM M8 8 USA NY M6 6 USA WA M5 5 USA MA M4 4 所以一个ORDER BY时间DESC,它由不同的名称分组,并由不同的子名称进行分组. 这可能吗?我正在寻找一种不是DBMS特定的解决方案 – 可以在大多数所有DBMS中运行. 解决方法您没有标记您的RDBMS,因此对于应用于大多数RDBMS的ANSI-SQL,您可以使用ROW_NUMBER():SELECT s.* FROM ( SELECT t.*,ROW_NUMBER() OVER(PARTITION BY t.name,t.subname ORDER BY t.time DESC) as rnk FROM YourTable ) s WHERE s.rnk = 1 ORDER BY s.time DESC,s.name 编辑:这是一个核心ANSI SQL的答案,应该在任何数据库上工作,你可以使用NOT EXISTS(): SELECT * FROM YourTable t WHERE NOT EXISTS(SELECT 1 FROM YourTable s WHERE t.name = s.name and t.subname = s.subname AND s.time > t.time) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |