MySQL Выбор из одной таблицы в другую на основе идентификатора - PullRequest
2 голосов
/ 06 марта 2012

У меня проблема с MySQL

У меня есть две таблицы, я хочу сохранить Val1 из Таблицы 2 в Val2 в Таблице 1

Table1

ID-----Val1-----Val2
1------A--------NULL
2------B--------NULL
3------C--------NULL
4------D--------NULL
5------E--------NULL

Table2

ID-----Val1
1------aaa
2------bbb
3------ccc
4------ddd
5------eee

Так что Table1 теперь выглядит как

Table1

ID-----Val1-----Val2
1------A--------aaa
2------B--------bbb
3------C--------ccc
4------D--------ddd
5------E--------eee

Прямо сейчас у меня есть

INSERT INTO Table1(Val2) SELECT Val1 FROM Table2 WHERE Table1.ID=Table2.ID;

Любая помощь приветствуется!

Ответы [ 2 ]

4 голосов
/ 06 марта 2012

Можно использовать подзапрос ( SQLize ):

UPDATE Table1
SET Val2 = ( SELECT Val1 FROM Table2 WHERE Table1.ID = Table2.ID )
WHERE Val2 IS NULL

или обновление нескольких таблиц ( SQLize ):

UPDATE Table1, Table2
SET Table1.Val2 = Table2.Val1
WHERE Table1.ID = Table2.ID AND Table1.Val2 IS NULL

или то же самое с явным JOIN ( SQLize ):

UPDATE Table1 JOIN Table2 ON Table1.ID = Table2.ID
SET Table1.Val2 = Table2.Val1
WHERE Table1.Val2 IS NULL

(я предполагаю, что вы хотите обновить только строки в Table1, для которых Val2равно NULL. Если вы хотите перезаписать значения для всех строк с совпадающими ID s в Table2, просто удалите условие WHERE Table1.Val2 IS NULL.)

0 голосов
/ 06 марта 2012
update table1 
inner join table2 on table1.id = table2.id
set table1.val2 = table2.val1
...