MySQL: вставьте одну строку для каждого ключа во внешней таблице для каждого отдельного значения в таблице - PullRequest
2 голосов
/ 21 июля 2009

table1:

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 и вставляет один столбец для каждого столбца 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.

1 Ответ

8 голосов
/ 21 июля 2009
INSERT IGNORE INTO `table1`
SELECT DISTINCT `table2`.`col1`, `table1`.`col2`
FROM `table1`
JOIN `table2`
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...