我在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
答案 0 :(得分:2)
这会为您提供您喜欢的记录,但只有col1
到col4
:
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