Вставить запрос зависит от другой таблицы
Ниже приведены таблицы 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