То, что я пытаюсь сделать, должно быть действительно простым. У меня есть две таблицы со следующими столбцами:
Таблица 1:
Имя, Уровень
Таблица 2:
Имя, Стоимость
Имя является первичным ключом. Я хочу объединить данные обеих таблиц в одну таблицу, которая имеет все три столбца. То, что я пытался сделать, это добавить столбец стоимости в таблицу 1 и скопировать в нее все значения стоимости из таблицы 2. Я пробовал множество предложений из других тем на этом сайте, и у меня никогда не было ни одной работы для меня. Новый столбец Стоимость в Таблице 1 никогда не изменялся с какими-либо новыми значениями. Зачем?
Я делаю это на MySQL Workbench на Ubuntu.
Вот тот, который я попытался использовать (новый столбец стоимости уже сделан для Tbl1):
ОБНОВЛЕНИЕ Tbl1
Стоимость SET = (
ВЫБРАТЬ Стоимость
ОТ Tbl2
WHERE Name = ‘SpecificName’)
WHERE Name = ‘SpecificName;
Это работает, когда я указываю отдельные строки, но не работает, когда я заменяю Name = ‘SpecificName’ на что-то вроде «Tbl1.Name = Tbl2.Name»
Проблема, с которой вы сталкиваетесь, заключается в том, что некоторые имена находятся в одной таблице, но не в другой. Вот один метод, используя один create table as
:
create table NameLevelCost as
select n.name, t1.level, t2.cost
from (select name from table1
union
select name from table2
) n left join
table1 t1
on t1.name = n.name left join
table2 t2
on t2.name = n.name;
Это предполагает, что name
уникален в каждой из таблиц.
update Tbl1 t1 left join Tbl2 t2 on t2.Name = t1.Name set t1.Cost = t2.Cost;