2016-08-27 2 views
0

Я пытаюсь вставить дату из таблицы A в таблицу B, когда дата еще не существует в таблице B. Я использовал функцию NOT EXISTS, но даты, похоже, не заполняются, как я бы надеялся.Вставка строк из одной таблицы в другую, если они еще не существуют в MySQL

Чтобы дать дополнительный контекст, таблица B представляет собой основную книгу, которая может иметь ноль или несколько транзакций за один день, а таблица А представляет собой баланс с одной записью за каждый день независимо от того, была ли транзакция в общем Леджер.

Вот код SQL я использовал:

INSERT INTO gl_account_type_descriptions 
    (Company_Name, `Account ID`, `Date`) 
SELECT Company_Name, 
     `Account ID`, 
     `Date` 
FROM all_balance_sheet 
WHERE NOT EXISTS (
    SELECT DISTINCT Company_Name, Account ID`, `Date` 
    FROM gl_account_type_descriptions 
) 

ответ

0

Вы упускаете условия внутри NOT EXISTS части:

INSERT INTO gl_account_type_descriptions 
    (Company_Name, `Account ID`, `Date`) 
SELECT Company_Name, `Account ID`, `Date` 
FROM all_balance_sheet AS bal 
WHERE NOT EXISTS (
    SELECT Company_Name, `Account ID`, `Date` 
    FROM gl_account_type_descriptions AS acc 
    WHERE bal.Company_name = acc.Company_name 
    AND bal.`Account ID` = acc.`Account ID` 
    AND bal.`Date` = acc.`Date` 
) 

Я также удалить лишнюю DISTINCT положение, так как он не нужен и замедлит ваш запрос.

+0

Это сработало отлично! Я знал, что у меня что-то не хватает из предложения NOT EXISTS. Спасибо за вашу оперативную помощь! – izzy84

0

Если ваш столбец AccountId уникален. Затем вы можете использовать ниже sql

INSERT IGNORE INTO gl_account_type_descriptions (`Account ID`,Company_Name, `Date`) 
SELECT DISTINCT `Account ID`,Company_Name, `Date` FROM all_balance_sheet; 
Смежные вопросы