MySql заполнить таблицу значениями в зависимости от другой таблицы - PullRequest
2 голосов
/ 20 января 2020

В mySql У меня есть 2 таблицы.

t1 выглядит как

id      color
------------
1       red
2       green
3       blue
4       purple

t2 выглядит как

id      t1_id       ship
------------------------
1       1           a
2       1           b
3       1           c
4       2           a
5       2           b
6       3           b

Мне нужно заполнить t2 так, чтобы для каждой записи в t1 было три записи в t2 - одна с «a» в строке корабля, одна с «b» в строке корабля и одна с «c» в Это. Я не хочу иметь несколько записей с одной и той же комбинацией t1_id <-> ship. Таким образом, после запроса t2 должен выглядеть следующим образом.

t2 после запроса, который я ищу

id      t1_id       ship
------------------------
1       1           a
2       1           b
3       1           c
4       2           a
5       2           b
6       3           b
7       2           c
8       3           a
9       3           c
10      4           a
11      4           b
12      4           c

Есть идеи о том, как этого добиться?

1 Ответ

1 голос
/ 20 января 2020

Если вы хотите поместить их в таблицу, вы можете использовать:

insert into t2 (t1_id, ship)
    select  t1.id, s.ship
    from t1 cross join
         (select distinct ship from t2) s left join
         t2
         on t2.t1_id = t1.id and t2.ship = s.ship
    where t2.t1_id is null;

Вставляет «оставшиеся» значения в table2.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...