#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 … Вот что это делает.