Tworzę menu i podmenu w zmiennej tabeli. (Typowe nadrzędne rekordy podrzędne w tej samej tabeli) ParentID coll ma wartość null dla wszystkich górnych menu. I dla ich dzieci ParentID będzie menuId tych rodzicielskich menu. (W zależności od tego, jaki rodzaj logów użytkownika jest tworzony) Teraz, co muszę zrobić, to jeśli dany rodzic nie ma żadnego dziecka Chcę usunąć ten nadrzędny element recrod z tej tabeli.
Wiem, że mogę to zrobić za pomocą kursora lub operacji wiersz po wierszu. Czy mogę to zrobić w jakikolwiek inny sposób?Usuń rekord rodzica, jeśli dziecko nie jest obecne
5
A
Odpowiedz
3
Nie widząc swoją strukturę tabeli trudno powiedzieć dokładnie zapytanie będzie trzeba, ale jeśli dobrze rozumiem pytanie, po prostu trzeba coś zrobić jak to:
DELETE T
FROM MyTable T
WHERE NOT EXISTS(SELECT * FROM MyTable WHERE ParentID = T.MenuID)
AND T.ParentID IS NULL
To zapytanie wykonuje skorelowane podzapytanie, aby znaleźć wszystkie rekordy menu, które nie mają rekordów podrzędnych. Używa SQL za EXISTS klauzuli
1
Można zrobić coś takiego:
delete from yourtable yt where not exists (select * from yourtable yt2 where yt.id = yt2.parentid) and yt.parentid is null
4
Pojedyncza instrukcja jak to powinno zrobić to (jak istnieje alternatywa do stosowania):
delete p
from
tblMenu p
left join tblMenu c on p.ID = c.ParentID
where
p.ParentID is null --Ensures that the item to delete is at the top
and c.ParentID is null --Finds top level items with no children
Powiązane problemy
- 1. określony dziecko ma już rodzica
- 2. Usuń plik, jeśli aktualnie nie jest dostępny
- 3. Zapobieganie dziecko od wypalania zdarzenie click rodzica
- 4. SQL Wstaw rekord, jeśli nie istnieje
- 5. Siła klasa dziecko przesłonić metody rodzica
- 6. Angular2: dwukierunkowy wiązania wewnątrz elementu rodzica/dziecko
- 7. IntelliJ: pokazuje dekompilowany demontaż klasy, nawet jeśli źródło jest obecne
- 8. Wypełnienie w zespole jest obecne lub nie
- 9. USUŃ rekord w pozycji relacyjnej w MySQL?
- 10. usuń cudzysłowy z ciągu znaków na początku i końcu, tylko jeśli oba są obecne.
- 11. Wybierz ostatnie dziecko, gdy nieparzyste, 2 ostatnie dziecko, nawet jeśli
- 12. Jeśli fork() i rozwidlone (dziecko) wyjścia procesu są wszystkie strony VM nadal oznaczone COW w rodzica?
- 13. Usuń wiersz, jeśli pole jest duplikatem.
- 14. Usuń pierwszy węzeł dziecko używając BeautifulSoup
- 15. SELECT następnie natychmiast USUŃ rekord mysql
- 16. Wyszukaj ręcznie usuń określony rekord Indeks
- 17. Jak mogę zamówić przez rodzica, a następnie dziecko?
- 18. Wzór GUI pokazujący, że dziecko dziedziczy wartość od rodzica
- 19. nHibernate Kryteria wyboru rodzica, jeśli dziecko w kolekcji ma określoną wartość
- 20. JPA Utrzymują rodzica i dziecko z jednego do wielu relacji
- 21. Html5 - Porzucanie ramki iframe przeglądarki krzyżowej - dziecko do rodzica?
- 22. Znajdź rodzica i pierwsze dziecko z jego rodzicem
- 23. Jak sprawdzić, czy rozszerzenie PECL jest obecne?
- 24. utrzymujących rodzica i osadzony rekord w Ember-danych
- 25. Jak poznać proces nadrzędny, jeśli dziecko jest uruchomione w tle i rodzic jest już zakończony?
- 26. Insert check zapytanie czy rekord istnieje - Jeśli nie, włóż ją
- 27. Usuń rodzica z dziećmi w jednym do wielu relacji
- 28. Sprawdź, czy rekord istnieje, jeżeli tak „update” jeśli nie „wstawić”
- 29. Jeśli istnieje rekord, aktualizacja Inaczej wstaw
- 30. ASP.NET UserControl nie jest inicjowane Kontroluje Dziecko
Chcesz zrobić to jako zadanie konserwacji (tzn raz), lub jako regularne występowanie, gdy dziecko zostanie usunięte? – Oded