Сравните два столбца в таблице Sql и выберите значения из первой таблицы, которых нет во втором столбце

#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