У меня есть таблица, я хочу написать запрос T-SQL, который выбирает значение Parent id из таблицы, а затем проверяет это значение в столбце Design ID.
Моя таблица такая: имя таблицы Tbl_project:
Мне нужно проверить, отсутствуют ли какие-либо Parent ID в столбце Design ID. В этом сценарии Parent ID = 50 отсутствует в столбце Design ID, поэтому я хочу заполнить только это значение.
Я попробовал выполнить дополнительный запрос, но не получил ожидаемого результата
Что вы пробовали и что не сработало так, как ожидалось? В стороне... Если цель состоит в том, чтобы поддерживать ссылочную целостность, внешний ключ, возвращающийся к той же таблице, будет выполнять это активно при вставке/обновлении записей.
@ThomA отметил, что ожидаемый результат: я хочу показать родительский идентификатор: 50, потому что это значение не существует в столбце Design OF.
Есть ли причина, по которой у вас нет этого ограничения FK? Таким образом, он изначально перейдет в плохое состояние...
Попробуйте что-нибудь вроде select parentid from yourtable t where not exists(select 1 from yourtable t2 where t2.designid = t.parentid)
Это запрос, который я пробовал: «выберите p1.parant_id из Tbl_project p1, где p1.parant_id отсутствует (выберите идентификатор p2.design из проекта p2)
@siggemannen большое спасибо, все работает нормально.
@ user3262364, запрос NOT IN также будет работать должным образом, если ни одно из значений designid не равно NULL.
Вы также можете попробовать select ParantID from tbl_project group by ParantID having count (case when ParantID = DesignID then 1 end) = 0; запросить таблицу только один раз. Я не знаю, быстрее ли это, потому что требует группировки. Возможно зависит от индексов.


Вы можете использовать EXCEPT, чтобы вернуть эти значения:
select Parent_ID from the_table
except
select Design_ID from the_table
Другой вариант — использовать подзапрос в предложенииwhere.
select p.parantid
from tbl_project p
where not exists (select 1 from tbl_project p2 where p2.designid = p.parantid);
См. этот dbFiddle
Даже если это небольшая таблица, пожалуйста, не загружайте изображения кода/данных/ошибок, задавая вопрос. «Я попробовал выполнить подзапрос, но не получил ожидаемого результата» — вы забыли указать эту попытку и объяснить, почему она не сработала. Вы также не включаете сюда ожидаемые результаты.