Сравнить два значения с двумя другими конкретными значениями в SQL

#sql #sqlite #compare

#sql #sqlite #Сравнить

Вопрос:

У меня также есть две структурированные таблицы:

 Teacher | Day | Month               Day | Month
  Red     12    June                12    June
 Blue     19    May                 8     September 
 Green    15    July                2     May
  

Я хотел бы исключить все даты, которые отображаются во второй таблице, поэтому я подумал структурировать запрос с помощью AND в предложении where, также структурированном: AND (day NOT IN (" day.table ") AND month NOT IN (" month.table "))" но таким образом он удаляет все данные с одним днем или одним месяцем, которые есть во второй таблице (это только дает мне зеленый цвет учителя). Как я могу это улучшить?
PS: month.table и day.table — это просто два ВЫБОРА, где я получаю все дни и все месяцы

Комментарии:

1. было бы полезно опубликовать ваш текущий сценарий и желаемый результат.

Ответ №1:

Вы можете использовать ЛЕВОЕ СОЕДИНЕНИЕ и исключить записи, где есть запись во второй таблице.

 SELECT * FROM table1 AS t1 LEFT JOIN table2 AS t2 
ON t1.Day = t2.Day AND t1.Month = t2.Month 
WHERE t2.Day IS NOT NULL; 
  

Ответ №2:

Вы ищете not exists ?

 select t1.*
from t1
where not exists (select 1 from t2 where t2.day = t1.day and t2.month = t1.month);
  

Комментарии:

1. Я хотел бы одновременно сравнить столбцы «День» и «месяц» первой таблицы с «днем» и «месяцем» второй таблицы. Поэтому, если я нашел две одинаковые даты, я могу исключить учителя.

2. @Babbara … Вот что это делает.