我有如下表: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