如何检查 primary 不是同一个 table 中的 parentID
How to check primary is not parentID in the same table
如何从 table 中删除包含父子关系的行。我搜索过去 12 小时内未更改状态且没有子项的记录,这意味着我必须查明它是否是其他记录的父项。
我的查询如下所示:
SELECT ItemID, ParentID, StatusID FROM table1
WHERE Digitalstatus = 1 AND LastChangedDateTime>= DATEADD(HOUR,-12, GETDATE()) AND StatusID = 1
MemberID ItemID ParentID StatusID
-------- -------- ------ --------
500006 4663119 NULL 1
687194 4663121 NULL 1
当我搜索其中一个成员时,我可以看到 ItemID 是其他记录中的父项
SELECT * FROM Table1 WHERE MemberID = 500006
MemberID ItemID ParentID StatusID
-------- ------- -------- --------
500006 3667431 NULL 1
500006 3704851 3667431 2
500006 4663041 NULL 1
500006 4663119 NULL 1
500006 4663120 4663119 2
500006 3792268 3704851 3
500006 4663124 4663120 3
我的问题是如何只找到不是其他记录父级的 ItemID?
使用存在子句:
SELECT *
FROM Table1 t1
WHERE
MemberID = 500006 AND
NOT EXISTS (SELECT 1 FROM Table1 a
WHERE a.MemberID = 500006 AND a.ParentID = t1.ItemID);
上述查询的逻辑读起来非常接近您的要求,并且仅在其 ItemID
不同时用作其他记录的 ParentID
.
时才保留一条记录
如何从 table 中删除包含父子关系的行。我搜索过去 12 小时内未更改状态且没有子项的记录,这意味着我必须查明它是否是其他记录的父项。 我的查询如下所示:
SELECT ItemID, ParentID, StatusID FROM table1
WHERE Digitalstatus = 1 AND LastChangedDateTime>= DATEADD(HOUR,-12, GETDATE()) AND StatusID = 1
MemberID ItemID ParentID StatusID
-------- -------- ------ --------
500006 4663119 NULL 1
687194 4663121 NULL 1
当我搜索其中一个成员时,我可以看到 ItemID 是其他记录中的父项
SELECT * FROM Table1 WHERE MemberID = 500006
MemberID ItemID ParentID StatusID
-------- ------- -------- --------
500006 3667431 NULL 1
500006 3704851 3667431 2
500006 4663041 NULL 1
500006 4663119 NULL 1
500006 4663120 4663119 2
500006 3792268 3704851 3
500006 4663124 4663120 3
我的问题是如何只找到不是其他记录父级的 ItemID?
使用存在子句:
SELECT *
FROM Table1 t1
WHERE
MemberID = 500006 AND
NOT EXISTS (SELECT 1 FROM Table1 a
WHERE a.MemberID = 500006 AND a.ParentID = t1.ItemID);
上述查询的逻辑读起来非常接近您的要求,并且仅在其 ItemID
不同时用作其他记录的 ParentID
.