Вставить запрос зависит от другой таблицы

Ниже приведены таблицы MySQL. Мне нужно вставить значения из столбца ID таблицы A в столбец ID_A таблицы B. Уже существующие значения в ID_A следует игнорировать. Таким образом, в приведенном ниже примере идентификаторы 1–3 из таблицы A следует игнорировать, а идентификаторы 4–10 следует вставлять в таблицу B. Значение ID_X является постоянным, т. Е. 3.

Какой будет SQL-запрос с одной вставкой?

4 ответа

Решение

Один простой вариант - присоединиться слева A с B и вставьте только те записи из A которые еще не появляются в B,

INSERT INTO B (ID_A, ID_X)
SELECT A.ID, 3
FROM A LEFT JOIN B
   ON A.ID = B.ID_A
WHERE B.ID_A IS NULL

Вы могли бы создать unique index на колонке ID_Aи затем выполните запрос:

INSERT IGNORE INTO table_b
    SELECT      ID,
                3
        FROM    table_a;

Это должно добавить недостающие строки.

INSERT INTO TABLEB
(ID_A,ID_X)
SELECT
     ID,
     3
FROM TABLEA
WHERE ID NOT IN (SELECT ID_A FROM TABLEB)

Попробуй это;)

insert into tableb (id_a, id_x)
select a.id as id_a, 3 as id_x from tablea a join tableb b on b.id_a <> a.id
Другие вопросы по тегам