Как сравнить 2 таблицы с датами и проверить, какая дата отсутствует, и вставить дату с помощью Mysql?

#mysql #sql #date #compare

Вопрос:

Как сравнить 2 таблицы с датами и проверить, какая дата отсутствует, и вставить дату с помощью Mysql ??

таблица 1 : appweb_ind_exeindicadores — СТОЛБЕЦ: dataindicador

таблица 2 : календарь — СТОЛБЕЦ: dataindicador2

изображение:

таблица 01

изображение:

таблица 02

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

1. Используйте SELECT запрос, который получает все строки из таблицы 2, которых нет в таблице 1. Затем используйте это в качестве исходных данных для an INSERT INTO table1 .

Ответ №1:

Вы можете использовать что-то вроде приведенного ниже, чтобы получить список дат в одной таблице, но не в другой, а затем написать ВСТАВКУ вокруг этого, чтобы добавить ее.

 -- This will give you the dates in table 1 but not in table 2
SELECT DISTINCT table1.date
FROM table1
WHERE table1.date NOT IN (SELECT DISTINCT table2.date2 FROM table2)
 

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

1. на рисунке 1 таблицы 1 у меня есть некоторые даты, которые не отображаются, например: 2021-09-11 и 2021-09-14, мне нужно ввести эти даты, чтобы запрос проверял и вставлял вручную

Ответ №2:

Если вам нужны уникальные даты calendteste , я бы посоветовал вам позволить базе данных выполнить проверку. Итак, создайте уникальное ограничение для столбца:

 alter table calendteste add constraint unq_calendteste_dataindicador2
    unique (dataindicador2);
 

Затем вы можете вставить строки и использовать on duplicate key update их для обработки дубликатов:

 INSERT INTO calendteste (dataindicador2)
    SELECT distinct dataindicador
    FROM appweb_ind_exeindicadores
    ON DUPLICATE KEY UPDATE dataindicador2 = VALUES(dataindicador2);
 

Фактическая логика заключается в отсутствии операции-обновление не происходит, но ошибка дубликата ключа игнорируется. Это безопасный способ убедиться, что в столбце нет дубликатов.

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

1. на рисунке 1 таблицы 1 у меня есть некоторые даты, которые не отображаются, например: 2021-09-11 и 2021-09-14, мне нужно ввести эти даты, чтобы запрос проверял и вставлял вручную