MySQL:查询为父行中的每个主键创建一行

时间:2011-10-14 20:18:31

标签: mysql sql

这很容易编写脚本,但我想学习如何在纯SQL中完成它。我有一个users表。在users表中,id是主键。现在假设我有一个名为foos的新表。每个用户都可以拥有一个foo。我希望能够为表usersfoos表中的每个用户创建一行(现在数据是否相同)。 foos只有两列,user_idname

foos中为user_id为user.id并且名称为任意随机字符串的每个用户循环访问用户并创建伴随行的最佳方法是什么。

2 个答案:

答案 0 :(得分:4)

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

OR

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.

答案 1 :(得分:2)

我会说它是这样的:

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

你需要注意两次运行它不会遇到错误,所以我们需要“if not exists”条款。