11

我有一个表,myTable里面有两个字段IDpatientID. 同一个患者 ID 可以在表中多次使用不同的 ID。如何确保我只获得ONE每个 . 的实例patientID

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

4

4 回答 4

32

您可以使用CTEwithROW_NUMBER函数:

WITH CTE AS(
    SELECT myTable.*
    , RN = ROW_NUMBER()OVER(PARTITION BY patientID ORDER BY ID)
    FROM myTable 
)
SELECT * FROM CTE
WHERE RN = 1
于 2012-06-16T14:58:41.750 回答
4

听起来您正在寻找DISTINCT

SELECT DISTINCT patientID FROM myTable

您可以通过以下方式获得相同的“效果” GROUP BY

SELECT patientID FROM myTable GROUP BY patientID
于 2012-06-16T14:56:48.303 回答
0

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

于 2012-06-16T14:55:46.820 回答
-1
WITH CTE AS
(
   SELECT tableName.*,ROW_NUMBER() OVER(PARTITION BY patientID ORDER BY patientID) As 'Position' FROM  tableName
)

SELECT * FROM CTE
WHERE
Position = 1
于 2019-02-15T14:17:04.017 回答