J'ai une table qui a l'ID, le nom, le niveau (la profondeur) et le parrent_id, est-il un bon moyen de supprimer tous les nœuds sans enfants? (Sur un seul niveau suffit)? Je sais que je peux le faire dans l'application - charger tous les nœuds sur un niveau donné et vérifier s'ils ont des enfants, sinon supprimer, mais ce serait probablement plus efficace en SQL et je ne suis pas gourou SQL :)Comment supprimer tous les parrents sans enfants dans SQL?
1
A
Répondre
3
Vous pouvez essayer
SELECT DISTINCT tParent.*
FROM Table tParent LEFT JOIN
Table tChild ON tParent.ID = tChild.ParentID
WHERE tChild.ID IS NOT NULL
serait encore mieux d'essayer
SELECT *
FROM Table t
WHERE NOT EXISTS(SELECT 1 FROM Table WHERE ParentID = t.ID)
2
SELECT * FROM mytable where id in (SELECT parent_id from mytable)
Cela devrait faire le travail
La question est de supprimer ceux qui n'ont pas d'enfants – anthares
OK, désolé, je vois ce que vous meen. Devrait changer à * N'EST PAS NULL * –
Exactement, je me suis trompé la première fois, aussi :) – anthares