#mysql #mysql-workbench
Вопрос:
У меня есть две простые таблицы, поле «ИДЕНТИФИКАТОР» является первичным ключом в обеих. Я хочу вставить поле таблицы 2 «Расчетный размер» в поле таблицы 1 «Размер» с помощью внутреннего соединения по «Идентификатору».
Таблица 1:
ID | Размер |
---|---|
1 | |
2 |
Таблица 2:
ID | Вычисленный размер |
---|---|
2 | S |
Ожидаемый результат для таблицы 1:
ID | Размер |
---|---|
1 | |
2 | S |
Вот мой вопрос:
insert into Table1 (Calculated_size)
select Size from Table2
inner join Table1
on Table2.ID = Table1.ID;
при выполнении он выдает ошибку 1364: поле «ИДЕНТИФИКАТОР» не имеет значения по умолчанию. Почему?
Я попытался отключить STRICT_TRANS_TABLES в режиме SQL, но это не возымело никакого эффекта.
Я использую MySQL Workbench 8.0.15 и MySQL версии 5.7.25-журнал
Заранее спасибо
Ответ №1:
Ты хочешь update
, а не insert
:
update table1 t1 join
table2 t2
on t1.id = t2iid
set t1.Calculated_size = t2.size;
insert
вставляет новые строки в таблицу-не упомянутые столбцы имеют значения по умолчанию. update
обновляет значения в существующих строках.
Комментарии:
1. Большое вам спасибо, это сработало