我有一个表,myTable
里面有两个字段ID
,patientID
. 同一个患者 ID 可以在表中多次使用不同的 ID。如何确保我只获得ONE
每个 . 的实例patientID
?
编辑:我知道这不是完美的设计,但我需要今天从数据库中获取一些信息,然后再修复它。
我有一个表,myTable
里面有两个字段ID
,patientID
. 同一个患者 ID 可以在表中多次使用不同的 ID。如何确保我只获得ONE
每个 . 的实例patientID
?
编辑:我知道这不是完美的设计,但我需要今天从数据库中获取一些信息,然后再修复它。
您可以使用CTE
withROW_NUMBER
函数:
WITH CTE AS(
SELECT myTable.*
, RN = ROW_NUMBER()OVER(PARTITION BY patientID ORDER BY ID)
FROM myTable
)
SELECT * FROM CTE
WHERE RN = 1
听起来您正在寻找DISTINCT
:
SELECT DISTINCT patientID FROM myTable
您可以通过以下方式获得相同的“效果” GROUP BY
:
SELECT patientID FROM myTable GROUP BY patientID
简单的方法是添加LIMIT 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