选择记录的第一个实例

时间:2012-06-16 14:54:01

标签: sql sql-server-2008

我有一张表myTable,其中包含两个字段IDpatientID。使用不同的ID,同一个patientID可以在表中多次出现。如何确保每个ONE仅获得patientID个实例。?

编辑:我知道这不是完美的设计,但我需要从数据库中获取一些信息,然后立即修复它。

4 个答案:

答案 0 :(得分:24)

您可以使用CTE ROW_NUMBER函数:

WITH CTE AS(
    SELECT myTable.*
    , RN = ROW_NUMBER()OVER(PARTITION BY patientID ORDER BY ID)
    FROM myTable 
)
SELECT * FROM CTE
WHERE RN = 1

答案 1 :(得分:3)

听起来你正在寻找DISTINCT

SELECT DISTINCT patientID FROM myTable

您可以使用GROUP BY获得相同的“效果”:

SELECT patientID FROM myTable GROUP BY patientID

答案 2 :(得分:0)

简单的方法是将LIMIT 1添加到查询的末尾。这将确保在结果集中只返回一行。

答案 3 :(得分:0)

所有解决方案中的最简单

WITH CTE AS
(
   SELECT tableName.*,ROW_NUMBER() OVER(PARTITION BY patientID ORDER BY patientID) As 'Position' FROM  tableName
)

SELECT * FROM CTE
WHERE
Position = 1