我不知道如何解释我的问题所以我正在显示样本数据。
我有下表
---------------------------------
|RecID |TypeOfData |Data |
|21 |Label |Name |
|21 |Data |Sam |
|22 |Label |Name |
|23 |Label |Name |
|23 |Data |Nimble |
我想删除所有那些没有数据的Label记录。 因此,在上面的示例中,需要删除RecID = 22。
请帮助我。
Db是SQL Server 2008.
答案 0 :(得分:1)
这是你想要的吗?
delete t
from t
where t.typeofdata = 'Label' and
not exists (select 1
from t t2
where t2.recid = t.recid and t2.typeofdata = 'Data'
);
“下方”并不代表关系表中的任何内容,因为该表代表无序集。
答案 1 :(得分:1)
可能是您可以使用Rec_id的计数为= 1
的子选择 delete from my_table
where Rec_id in (select RecID from my_table
group by RecId
having count(*) =1)
and TypeOdData = 'Label'
答案 2 :(得分:0)
WITH CTE(TypeOfData, Data, Rn)
AS
(
SELECT [TypeOfData], [Data],
RN = ROW_NUMBER() OVER(PARTITION BY TypeOfData, DATA ORDER BY TypeOfData,Data)
FROM tbl
WHERE TypeOfData ='label'
)
DELETE FROM CTE WHERE RN > 1