我有如下表:SQL删除唯一行表
PatientID | DiagID
...其中PatientID
是一个唯一的标识符,DiagID
是诊断ID,这是不是唯一的。我如何从表格中删除患者,谁拥有独特的DiagID
(表中唯一的人,谁拥有这个具体的DiagID
)?
我有如下表:SQL删除唯一行表
PatientID | DiagID
...其中PatientID
是一个唯一的标识符,DiagID
是诊断ID,这是不是唯一的。我如何从表格中删除患者,谁拥有独特的DiagID
(表中唯一的人,谁拥有这个具体的DiagID
)?
假定您想要删除任何只有单个诊断ID实例的患者。在这种情况下,SQL将如下所示:
DELETE Patient
WHERE DiagID in
(SELECT DiagID FROM Patient GROUP BY DiagID HAVING COUNT(*) = 1)
一个删除where子句没有使用主键,例如:
Delete From Table
Where DiagID = 5
如果你的意思是你要删除所有不重复则是这样的:
Delete From Table
Where DiagID In (Select DiagID
From Table
Group By DiagID
HAVING count(*) = 1)
你说只有一名患者具有此特定诊断ID?
delete
from YourTable
where DiagID = @diagId
如果你知道它是唯一一个那么有没有错
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
您是否尝试删除只有一个DiagID的患者?
DELETE FROM table
WHERE PatientID IN
(SELECT DiagID FROM table
GROUP BY DiagID
HAVING COUNT(*) = 1)
DELETE
D
FROM
DiagTable D
JOIN
(SELECT DiagID FROM DiagTable D2 GROUP BY DiagID HAVING COUNT(*) = 1) foo ON D.DiagID = foo.DiagID
子查询找到独特的(即使用一次)DiagIDs。这用于JOIN bak删除这些唯一DiagID的行
子查询应该抛出一个错误:在DiagID上没有聚合。解决这个问题,然后给定PatientID始终是唯一的,那么COUNT(*)总是1. TRUNCATE TABLE会更快。 -1 – gbn 2010-02-24 18:51:55
哎呀是的其他有它正确的 – ctrlShiftBryan 2010-02-24 19:58:03