我有一张表myTable
,其中包含两个字段ID
和patientID
。使用不同的ID,同一个patientID可以在表中多次出现。如何确保每个ONE
仅获得patientID
个实例。?
编辑:我知道这不是完美的设计,但我需要从数据库中获取一些信息,然后立即修复它。
答案 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