MySQL是否有一种很好的方式来复制SQL Server功能ROW_NUMBER()?
例如:
SELECT
col1, col2,
ROW_NUMBER() OVER (PARTITION BY col1, col2 ORDER BY col3 DESC) AS intRow
FROM Table1
Run Code Online (Sandbox Code Playgroud)
然后,我可以,例如,添加一个限制intRow为1 的条件,以获得col3每(col1, col2)对最高的单行.
以下是最简单的可能示例,但任何解决方案都应该能够扩展到需要的n个顶级结果:
根据下面的表格,使用人员,组和年龄列,您将如何获得每组中最老的2个人?(组内的关系不应该产生更多结果,但按字母顺序给出前2个)
+--------+-------+-----+ | Person | Group | Age | +--------+-------+-----+ | Bob | 1 | 32 | | Jill | 1 | 34 | | Shawn | 1 | 42 | | Jake | 2 | 29 | | Paul | 2 | 36 | | Laura | 2 | 39 | +--------+-------+-----+
期望的结果集:
+--------+-------+-----+ | Shawn | 1 | 42 | | Jill | 1 | 34 | | Laura | 2 | 39 | | …