2009-07-21 4 views
2

table1:MySQL: Вставьте одну строку для каждого ключа в иностранной таблице для каждого отдельного значения в таблице

col1 | col2 
------------- 
0  value1 
1  value1 
2  value1 

0  value2 
1  value2 

2  value3 

первичный ключ является col1 и col2 вместе

table2:

col1 | col3 
------------- 
0  name1 
1  name2 
2  name3 

первичной ключ - col1. col1 в таблице 1 относится к col1 в таблице2.

Мне нужен запрос mysql, который проходит через каждый отдельный col2 в таблице1, и INSERTS один столбец для каждого col1 в таблице2, если еще не существует пары ключей col1 + col2.

Так в основном после того, как этот запрос выполняется table2 должен выглядеть так же и table1 должен выглядеть следующим образом:

col1 | col2 
------------- 
0  value1 
1  value1 
2  value1 

0  value2 
1  value2 
2  value2 

0  value3 
1  value3 
2  value3 

Я знаю, как сделать это с помощью цикла в PHP, но я пытаюсь уйти от что обучение больше sql.

ответ

8
INSERT IGNORE INTO `table1` 
SELECT DISTINCT `table2`.`col1`, `table1`.`col2` 
FROM `table1` 
JOIN `table2` 
+0

Спасибо за ваши исследования и время! Работает как шарм! Введено 563 строки. (Запрос занял 0.0140 сек) – Baversjo

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