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

acm*_*cme 78 mysql sql loops insert

说我有一个选择

SELECT DISTINCT id, customer_id, domain FROM config WHERE type = 'foo';
Run Code Online (Sandbox Code Playgroud)

返回一些记录.

如何在结果集中为到达行执行插入操作

INSERT INTO config (id, customer_id, domain) VALUES (@id, @customer_id, 'www.example.com');
Run Code Online (Sandbox Code Playgroud)

这里@id@customer_id在结果中的行的字段中设置?

编辑:我不想只复制它,而是在字段中插入一个新值domain.然而,一个facepalm - 情况,因为它很容易;-)谢谢!

krt*_*tek 147

就这么简单:

INSERT INTO config (id, customer_id, domain) 
SELECT DISTINCT id, customer_id, domain FROM config;
Run Code Online (Sandbox Code Playgroud)

如果您想要" www.example.com"作为域名,您可以:

INSERT INTO config (id, customer_id, domain) 
SELECT DISTINCT id, customer_id, 'www.example.com' FROM config;
Run Code Online (Sandbox Code Playgroud)

  • 你已经保存了我的编辑团队几周的无意识模板更改:-) (2认同)

Ken*_*Ken 7

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;
Run Code Online (Sandbox Code Playgroud)


Jef*_*itz 5

INSERT INTO Config (id, customer_id, domain)
SELECT DISTINCT id, customer_id, 'www.example.com' FROM config
Run Code Online (Sandbox Code Playgroud)

这种语法的MySQL文档在这里:

http://dev.mysql.com/doc/refman/5.1/en/insert-select.html