#sql
#sql
Вопрос:
Рассмотрим приведенную ниже таблицу
ID|Parent_ID
1|0
2|0
3|1
4|1
5|1
6|2
7|2
8|3
9|3
10|5
11|7
Требуемый результат заключается в том, что просто сравните идентификатор столбца со столбцом Parent_ID для значений, отсутствующих в Parent_ID .
Result
4
6
8
9
10
11
Комментарии:
1. Возможно, ваш вопрос может быть связан с некоторым форматированием?
2. Не существует такой вещи, как база данных SQL — SQL — это просто язык структурированных запросов — язык, используемый многими системами баз данных, но это не продукт базы данных. Многие вещи зависят от поставщика, поэтому нам действительно нужно знать, какую систему баз данных (и какую версию) вы используете …. (пожалуйста, обновите теги соответствующим образом)
Ответ №1:
Вы не указываете RDBMS. Это стандартный SQL.
SELECT ID
FROM YourTable
EXCEPT
SELECT Parent_ID
FROM YourTable
Или
SELECT ID
FROM YourTable
WHERE ID NOT IN (SELECT Parent_ID
FROM YourTable
WHERE Parent_ID IS NOT NULL)
Ответ №2:
Если вы используете MySQL:
select id
from tbl
where id not in (select parent_id from tbl)
При использовании Oracle
select id
from tbl
minus
select parent_id
from tbl
Если вы используете SQL Server, используйте EXCEPT, как показано в предыдущем ответе
Ответ №3:
Это тоже сработало бы. Смотрите демонстрацию ЗДЕСЬ
select id from table1
where id not in
(
select t1.id from table1 t1
join table1 t2
on t1.id = t2.parent_id
)
Ответ №4:
SELECT T1.ID FROM table AS T1
LEFT OUTER JOIN table AS T2
ON T1.ID = T2.Parent_ID
WHERE T2.ID IS NULL