MySQL:如何在SQL查询中为每个结果插入记录?

MySQL:如何在SQL查询中为每个结果插入记录?,mysql,sql,loops,insert,Mysql,Sql,Loops,Insert,说我有一个选择 SELECT DISTINCT id, customer_id, domain FROM config WHERE type = 'foo'; 返回一些记录 如何在结果集中插入reach行,如 INSERT INTO config (id, customer_id, domain) VALUES (@id, @customer_id, 'www.example.com'); 其中,@id和@customer\u id是结果集中行的字段 编辑:我不想只是复制它,而是在域中插入一

说我有一个选择

SELECT DISTINCT id, customer_id, domain FROM config WHERE type = 'foo';
返回一些记录

如何在结果集中插入reach行,如

INSERT INTO config (id, customer_id, domain) VALUES (@id, @customer_id, 'www.example.com');
其中,
@id
@customer\u id
是结果集中行的字段

编辑:我不想只是复制它,而是在域中插入一个新值。尽管如此,这是一个非常简单的情况;-)谢谢

就这么简单:

INSERT INTO config (id, customer_id, domain) 
SELECT DISTINCT id, customer_id, domain FROM config;
如果希望“
www.example.com
”作为域,可以执行以下操作:

INSERT INTO config (id, customer_id, domain) 
SELECT DISTINCT id, customer_id, 'www.example.com' FROM config;
此语法的MySQL文档如下:


编辑-阅读@Krtek回答的评论后

我猜你要求的是更新而不是插入-

update config set domain = 'www.example.com'
这将更新配置表中域为“www.example.com”的所有现有记录,而不创建任何重复项

旧答案-

你可以用像-

INSERT INTO config (id, customer_id, domain)
select id, customer_id, domain FROM config

注意:-如果将id作为主键,则此操作将无效执行此SQL语句:

INSERT INTO config (id, customer_id, domain)
SELECT id, customer_id, 'www.example.com' FROM (
  SELECT DISTINCT id, customer_id, domain FROM config
  WHERE type = 'foo'
) x;
-- Do nothing.
您希望从“config”中选择不同的行,并将这些行插入到同一个表中。他们已经在里面了。无事可做



除非您实际上只是想更新“域”列中的部分或全部值。这需要一个真正起作用的UPDATE语句。

是否要复制所选的记录?为什么要将同一个表的记录再次插入同一个表中?这将产生重复的教授,这个问题非常愚蠢,我只是被一个非常简单的问题困住了。每个人都需要一个朋友时不时地回答他们的问题。对于您的努力,我授予:[我也有同样的问题。例如,表的设计方式,我需要复制其他用户的条目,但有356条记录需要复制给新用户。但这并不会插入一条新记录,将
domain
设置为“www.example.com”,它只会复制所有条目。你是对的-就这么简单-一个简单的解决方案简单的问题脸谢谢;-)我只是想写下复杂的连接来存档这个哈。非常感谢!再简单不过了。你救了我的编辑团队几个星期的无意识模板更改:-)@ArtemAnkudovich很高兴我能帮上忙:)没有必要做这样的子查询。检查另一个答案斯科特克:哪个答案呃,没错,你是在建议吗?我看到另外4个答案,每个答案在某种程度上都是错的。错在哪里?至少我的第二个查询和Jeff Fritz的查询的结果与你的相同。Krtek:如果表中有记录(1,1,“a”,“foo”)和(1,1,“b”,“foo”),那么问题中的第一个查询返回(1,1,“a”),(1,1,“b”),因此,正如所问的,记录(1,1,“example.com”)应该插入两次。您的答案与字符串文本“example.com”不一致,因此(1,1,“example.com”)只插入了一次。谢谢,但我不想复制每个字段,字段“域”应该不同。但它很简单,我只是被这个愚蠢的问题困住了。谢谢,但我不想复制每个字段,字段“域”应该不同。但它很简单,我只是被这个愚蠢的问题困住了问题。@acme-如果你使用insert,它肯定会复制结果,如果你将id标记为主键,它甚至不会让你插入行。我的回答显然很幽默,OP承认是facepalm。我一点也不为此感到羞耻。
-- Do nothing.