Найдите записи, которые не существуют во второй таблице, а также значения, сопоставленные с ними из первой

Привет, так что этот вопрос задавался раньше, но я не только пытаюсь извлечь записи, которые не просто существуют в первой таблице, но и сопоставление из первой таблицы, где их нет?

Например.

Предполагая, что я присоединюсь, используя Месяц и Год--

Таблица 1:

МесяцГод
32021
42021
52021
62023

Таблица 2:

Я БЫМесяцГод
1132021
2242021
3352021

Выход:

Я БЫМесяцГод
1162023
2262023
3362023

@DaleK сделал с 1 и 3. Для 2 я пробовал все другие решения, приведенные в StackOverflow, но, похоже, не могу понять дополнительное требование.

Tushar Sawhney 04.05.2022 05:51

Вам рекомендуется пометить единственную СУБД, которую вы используете, например. если MySQL, то пометьте его. Просто не помечайте конфликтующие СУБД.

Dale K 04.05.2022 05:52
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
1
2
42
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Select  
    t2.ID "ID",  
    no_match.MONTH "MONTH",  
    no_match.YEAR "YEAR"  
From  
    Table2 t2  
Inner Join  
    ( Select t1.MONTH "MONTH", t1.YEAR "YEAR" From Table1 t1 Left Join Table2 t2 ON(t1.MONTH = t2.MONTH And t1.YEAR = t2.YEAR) Where t2.YEAR Is Null ) no_match ON(1=1)  
Where  
    t2.YEAR || t2.MONTH <> no_match.YEAR || no_match.MONTH 

Ваш ответ может быть улучшен с помощью дополнительной вспомогательной информации. Пожалуйста, редактировать, чтобы добавить дополнительную информацию, например цитаты или документацию, чтобы другие могли подтвердить правильность вашего ответа. Дополнительную информацию о том, как писать хорошие ответы, можно найти в справочном центре.

Community 04.05.2022 18:59

Внутренний объединенный подзапрос с именем «no_match» выбирает записи из таблицы 1, которых нет в таблице 2. Теперь, когда они у нас есть, мы можем получить все идентификаторы из таблицы 2 рядом с соответствующей записью (записями) «no_match».

d r 05.05.2022 08:44
Ответ принят как подходящий

Из того, что вы говорите и показываете, вы хотите перекрестно соединить все строки таблицы 2 со строками таблицы 1, которые не имеют соответствия в таблице 2. Для поиска вы можете использовать NOT EXISTS.

select t2.id, t1.month, t1.year
from t1 cross join t2
where not exists
(
  select null
  from t2
  where t2.year = t1.year and t2.month = t1.month
);

Другие вопросы по теме