У меня есть две таблицы SQL
с одинаковыми структурами. Первый столбец - уникальный индекс с именем «opt», второй столбец - «val».SQL для копирования отсутствующих данных из одной таблицы в другую
В table1 заполняется значениями по умолчанию, например:
opt val
path /tmp
file myfile.txt
day tuesday
time 11:00
Вторая таблица, table2 будет содержать те же строки, но некоторые из значений столбца Вэл может отсутствовать, например:
opt val
path /var/tmp
file
day
time 16:30
Я хотел бы пройти через каждую строку в таблице2 и сказать: «Есть ли значение в столбце val? если нет, то получить от Вэла table1 и обновление table2, поэтому таблица 2 будет в конечном итоге, как:
opt val
path /var/tmp
file myfile.txt
day tuesday
time 16:30
т.е. заполнить недостающие данные из table1.
Я ищу чисто SQL
способ сделать это (т.е. без использования PHP
, ASP
и т. Д.).
Я знаком с синтаксисом IF/ELSE
в SQL
, но я не уверен, как я повторяю каждую строку в таблице. Может ли кто-нибудь завести меня в правильном направлении, пожалуйста?
Ответ зависит от вашего типа БД. Я думаю, что в большинстве БД (postgresql, mysql ...) вам нужно написать процедуру, которая читает анализ и запись diff. – michaelbn
В некоторых версиях SQL используется концепция «MERGE», которая может обновляться или вставляться по мере необходимости; поочередно некоторые поддерживают «MINUS» или «EXCEPT», которые могут быть использованы для быстрого определения отсутствующих значений и из которых вы можете предварительно подготовить обновление. Итак, что такое РСУБД? И какой SQL вы попробовали? – xQbert