获取SQL中的表的子集

时间:2011-06-29 14:32:38

标签: sql sql-server-2008

我想获得一个表的子集,这是示例:

1   A
2   A
3   B
4   B
5   C
6   D
7   D
8   D

我想获得唯一的记录,但ID最小:

1   A
3   B
5   C
6   D

如何在SQL Server中编写SQL?谢谢!

4 个答案:

答案 0 :(得分:4)

使用这样的公用表表达式:

;WITH DataCTE AS
(
   SELECT ID, OtherCol,
      ROW_NUM() OVER(PARTITION BY OtherCol ORDER BY ID) 'RowNum'
   FROM dbo.YourTable
)
SELECT *
FROM DataCTE
WHERE RowNum = 1

这会根据您拥有的第二列(A, B, C)对您的数据进行“分区”,并按ID1, 2, 3)排序 - 最小ID。

因此,对于每个“分区”(即第二列的每个值),RowNum = 1的条目是第二列的每个值的ID最小的条目。

答案 1 :(得分:3)

select min(id), othercol
from thetable
group by othercol

也许与

order by othercol

......最后如果那很重要

答案 2 :(得分:3)

试试这个:

SELECT MIN(Id) AS Id, Name
  FROM MyTable
 GROUP BY Name

答案 3 :(得分:2)

select min(id), column2
from table
group by column2 

如果您在问题中提供表格信息会有所帮助 - 我只是猜到了列名......