我有一个表,myTable里面有两个字段ID,patientID. 同一个患者 ID 可以在表中多次使用不同的 ID。如何确保我只获得ONE每个 . 的实例patientID?
编辑:我知道这不是完美的设计,但我需要今天从数据库中获取一些信息,然后再修复它。
我有一个表,myTable里面有两个字段ID,patientID. 同一个患者 ID 可以在表中多次使用不同的 ID。如何确保我只获得ONE每个 . 的实例patientID?
编辑:我知道这不是完美的设计,但我需要今天从数据库中获取一些信息,然后再修复它。
您可以使用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
听起来您正在寻找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