2011-12-15 4 views
0

У меня есть две таблицы, одна называется video_2, одна называется vlan.Запрос вставки в Mysql

Таблица vlan имеет две колонки, одна - vlan_id, одна - это область, это как индекс.

video_2 содержит несколько столбцов, vlan_id и площадь являются два из них, значение vlan_id в этой таблице захватывается другим способом

Теперь я хочу, чтобы вставить столбец данных в столбец «область» в таблице video_2, если vlan_id указан в vlan Таблица

Вот моя команда, но у нее есть синтаксическая ошибка, может ли кто-нибудь помочь?

"INSERT INTO video_2 (area), SELECT vlan.area FROM vlan WHERE vlan.vlan_id = video_2.vlan_id"

+0

Это звучит как UPDATE, а не INSERT. Вы изменяете столбец уже существующих строк? –

+0

@Michael столбец «область» в таблице «video_2» уже существует, но не содержит данных – manxing

ответ

-1

Попробуйте это:

INSERT INTO video_2 (area) 
select area 
from vlan 
where vlan.vlan_id = (select vlan_id from video_2) 

Попробуйте это:

INSERT INTO video_2 (area) 
select area 
from vlan 
INNER JOIN video_2 ON vlan.vlan_id video_2.vlan_id; 

Или: Это:

INSERT INTO video_2 (area) 
select area 
from vlan 
WHERE vlan.vlan_id IN (SELECT vlan_id FROM video_2); 
+0

@Yuck ошибка «подзапрос возвращает более одной строки» – manxing

+1

@manxing Не мой ответ, я просто отформатировал его. Но пока я здесь ... Просто измените 'where vlan.vlan_id = (выберите vlan_id из video_2)' to 'где vlan.vlan_id IN (выберите vlan_id из video_2)'. '=' нужно сравнить со скаляром, но 'IN' может работать с наборами. – Yuck

0

использовать этот запрос

"INSERT INTO video_2 (area) Values(SELECT vlan.area FROM vlan WHERE vlan.vlan_id = video_2.vlan_id)" 

я надеюсь, что он будет работать.

Смежные вопросы