MySQL: запрос для создания строки для каждого первичного ключа в родительской строке - PullRequest
0 голосов
/ 15 октября 2011

Это может быть легко написано в сценарии, но я хотел бы узнать, как это сделать только на чистом SQL.У меня есть users таблица.В таблице users id является первичным ключом.Теперь представьте, что у меня есть новая таблица с именем foos.У каждого пользователя может быть один фу.Я хотел бы иметь возможность создать строку (неважно, совпадают ли данные прямо сейчас) для каждого пользователя в таблице users в таблице foos.foos просто имеет только два столбца, user_id, name.

Каков наилучший способ циклически проходить между пользователями и создавать сопровождающую строку в foos для каждого пользователя, где user_id является пользователем.id и name - любая случайная строка.

Ответы [ 2 ]

4 голосов
/ 15 октября 2011
insert into foo (user_id, name)
select id, SomeStringInUserThatDoesntMatter 
from users

ИЛИ

insert into foo (user_id, name)
select id, 'This fixed string'
from users

ИЛИ (с небольшим удовольствием)

insert into foo (user_id, name)
select id, '4'
from users

с тех пор,

RFC 1149.5 specifies 4 as the standard IEEE-vetted random number.

2 голосов
/ 15 октября 2011

Я бы сказал, что это выглядит примерно так:

insert into if not exists foo (user_id, name)
select user_id, "any random stuff" from users;

Вам необходимо следить за тем, чтобы при повторном запуске его не возникали ошибки, поэтому нам нужно предложение "если не существует".

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