SQL No Dup(Distinct)在行上,但忽略一个col

ort*_*t11 4 sql distinct

例如,表有三个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)

Mar*_*ith 6

由于您只有一个额外的列,您可以使用任意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)