基于SQL中的某些列的不同记录

时间:2014-05-10 20:27:18

标签: sql sql-server

我在SQL server数据库中有一个名为myTable的表。我们可以说列的名称是:

  

col1,col2,col3,col4,col5

表中有数千条记录。 我想基于仅4列选择不重复的记录。

目前我使用以下查询:

SELECT DISTINCT col1, col2, col3, col4 FROM myTable

查询确实返回唯一且不同的记录,但是我也需要在结果中使用col5,甚至认为我不希望在我区分记录时考虑col5。 例如,表格中有三条记录如下:

col1   col2   col3   col4   col5    
 1      2      3      4      5       
 2      5      6      9      7     
 1      2      3      4      10 

我希望结果是这样的:

col1   col2   col3   col4   col5         
  1      2      3      4      5       
  1      2      3      4      10

1 个答案:

答案 0 :(得分:2)

这会为您提供您喜欢的记录,但只有col1col4

  SELECT col1, col2, col3, col4
  FROM myTable     
  group by col1, col2, col3, col4
  having count(*) > 1

如果您还需要col5,请使用

select t1.* 
from myTable t1
join
(
  SELECT col1, col2, col3, col4
  FROM myTable     
  group by col1, col2, col3, col4
  having count(*) > 1
) t2 on t1.col1 = t2.col1
    and t1.col2 = t2.col2
    and t1.col3 = t2.col3
    and t1.col4 = t2.col4

修改

在您编辑问题之后,这就是答案:

SELECT col1, col2, col3, col4, min(col5) as col5     
FROM myTable     
group by col1, col2, col3, col4