例如,表有三个cols和数据
col1 col2 col3
10 20 30
40 50 60
40 50 80
Run Code Online (Sandbox Code Playgroud)
想要选择最后两行的选择,只返回一行,因为col1和col2是相同的.
由于col3不同,select distinct不起作用.
所以输出会是
10 20 30
40 50 xx (don't care)
Run Code Online (Sandbox Code Playgroud)
由于您只有一个额外的列,您可以使用任意MIN/ MAX聚合和GROUP BY
SELECT col1,
col2,
MAX(col3) AS col3
FROM YourTable
GROUP BY col1,
col2
Run Code Online (Sandbox Code Playgroud)
更常见的是,如果您的RDBMS支持您可以使用的分析功能
WITH T
AS (SELECT col1,
col2,
col3,
ROW_NUMBER() OVER (PARTITION BY col1, col2
ORDER BY col1, col2) AS RN
FROM YourTable)
SELECT col1,
col2,
col3
FROM T
WHERE RN = 1
Run Code Online (Sandbox Code Playgroud)