Sobes.tech
Back to questions
Junior — Middle
96

Каким образом можно определить пользователей из первой таблицы, у которых отсутствует связанная запись во второй таблице, используя SQL?

Companies where asked
СБЕРСБЕР

Answer from AI

sobes.tech AI

Чтобы определить пользователей из первой таблицы, у которых отсутствует связанная запись во второй таблице, можно использовать несколько подходов в SQL:

  1. LEFT JOIN с проверкой на NULL во второй таблице:
SELECT t1.*
FROM first_table t1
LEFT JOIN second_table t2 ON t1.id = t2.user_id
WHERE t2.user_id IS NULL;

Здесь мы делаем левое соединение и выбираем те записи из первой таблицы, для которых нет соответствующих записей во второй (т.е. поля второй таблицы будут NULL).

  1. Использование NOT EXISTS:
SELECT *
FROM first_table t1
WHERE NOT EXISTS (
    SELECT 1 FROM second_table t2 WHERE t2.user_id = t1.id
);
  1. Использование NOT IN:
SELECT *
FROM first_table
WHERE id NOT IN (SELECT user_id FROM second_table WHERE user_id IS NOT NULL);

Первый и второй варианты обычно предпочтительнее с точки зрения производительности и корректности при наличии NULL в данных.