Как проверить основной не родительский идентификатор в той же таблице - PullRequest
0 голосов
/ 26 февраля 2020

Как удалить строки из таблицы, которые содержат отношения родитель-потомок. Я ищу записи, которые не меняли статус за последние 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, где он не является родителем для других записей?

1 Ответ

0 голосов
/ 26 февраля 2020

Используйте существующее предложение:

SELECT *
FROM Table1 t1
WHERE
    MemberID = 500006 AND
    NOT EXISTS (SELECT 1 FROM Table1 a
                WHERE a.MemberID = 500006 AND a.ParentID = t1.ItemID);

Лог c приведенного выше запроса читается довольно близко к вашему требованию и сохраняет запись, только если его ItemID также не служит другим запись ParentID.

...