SQL Отсеять значения столбца, которые содержат одно из нескольких значений другого столбца

|   ID     | |   PARENT  |
|    1     | |    0      |
|    2     | |    0      |
|    3     | |    2      |
|    4     | |    0      |
|    5     | |    4      |
|    6     | |    0      |
|    7     | |    0      |
|    8     | |    0      |

Гостевая книга
ID номер сообщения
PARENT 0 первое сообщение
если PARENT = ID то в сообщении с номером ID есть ответ.
нужно вывывести все сообщения без ответов для последующего удаления.

то есть на выходе будет так

|   ID     | |   PARENT  |
|    1     | |    0      |
|    6     | |    0      |
|    7     | |    0      |
|    8     | |    0      |

как написать правильно sql запрос. спасибо


Ответы (1 шт):

Автор решения: Alexey Trukhanov

Насколько я понимаю надо выбрать все ID, которых нет в PARENT и, при этом, PARENT которых равен нулю (это если я правильно понял, что имеются ввиду только первые сообщения без ответов)

SELECT * FROM guest_book
WHERE ID NOT IN (SELECT PARENT FROM guest_book) AND PARENT = 0
ORDER BY ID;
→ Ссылка