我有下表:
PatientID | DiagID
...其中PatientID
是唯一标识符,DiagID
是诊断ID,不是唯一的。如何从表中删除具有唯一DiagID
的患者(表中唯一的患者,具有此特定DiagID
)?
答案 0 :(得分:1)
据推测,您希望删除任何只有一个诊断ID实例的患者。在这种情况下,SQL将类似于:
DELETE Patient
WHERE DiagID in
(SELECT DiagID FROM Patient GROUP BY DiagID HAVING COUNT(*) = 1)
答案 1 :(得分:0)
delete where子句不必使用主键,例如:
Delete From Table
Where DiagID = 5
如果您的意思是要删除所有唯一身份用户,请执行以下操作:
Delete From Table
Where DiagID In (Select DiagID
From Table
Group By DiagID
HAVING count(*) = 1)
答案 2 :(得分:0)
您说只有一名患者具有此特定诊断ID吗?
delete
from YourTable
where DiagID = @diagId
答案 3 :(得分:0)
如果您知道它是唯一一个,那么这个
没有任何问题DELETE FROM Patient
WHERE DiagID = @inDiagID
如果你想要安全,这样的事情可能是明智的:
IF NOT EXISTS(SELECT DiagID FROM Patient WHERE DiagID = @inDiagID GROUP BY DiagID HAVING COUNT(DiagID) = 1)
BEGIN
DELETE FROM Patient
WHERE DiagID = @inDiagID
END
答案 4 :(得分:0)
您是否正在尝试删除只有一个DiagID的患者?
DELETE FROM table
WHERE PatientID IN
( SELECT DiagID FROM table
GROUP BY DiagID
HAVING COUNT(*) = 1)
答案 5 :(得分:0)
DELETE
D
FROM
DiagTable D
JOIN
(SELECT DiagID FROM DiagTable D2 GROUP BY DiagID HAVING COUNT(*) = 1) foo ON D.DiagID = foo.DiagID
子查询找到唯一(即使用过一次)DiagID。这用于JOIN bak删除这些唯一DiagID的行
答案 6 :(得分:0)
您可以使用 row_number 和 over partition by 和 sort by 来确定哪些记录是非唯一的诊断 ID,然后使用 where 子句过滤这些记录。使用此子查询,您可以删除这些行。我喜欢直观地确认被删除的行。