MySQL将多个表中的记录插入到新表中

时间:2011-10-17 21:06:36

标签: mysql

我正在尝试使用其他2个表中的记录填充新表。

period_states是新的/空的

 period_states
   id
   period_id
   sla_id

期间 - 包含15条记录

periods
  id

slas - 包含84条记录

slas
  id

我需要在每个现有的sla_id中填充period_states,每个sla_id都有一个退出的period_id。所以,最终在period_states中应该有1260条记录。

知道如何自动化吗?手动填充将是一场噩梦......

提前谢谢!!

4 个答案:

答案 0 :(得分:6)

如果期间状态的id列定义为AUTO_INCREMENT,那么这应该有效:

INSERT INTO period_states (period_id, sla_id)
SELECT p.id AS period_id
     , s.id AS sla_id
  FROM periods p
 CROSS
  JOIN slas s

以下是为id列提供值的一种方法示例:

INSERT INTO period_states (id, period_id, sla_id)
SELECT @myid := @myid + 1 AS id
     , p.id AS period_id
     , s.id AS sla_id
  FROM periods p
 CROSS
  JOIN slas s
 CROSS
  JOIN (SELECT @myid := 0) m

答案 1 :(得分:4)

INSERT INTO period_states
(period_id, sla_id)
SELECT periods.id, slas.id
FROM periods
CROSS JOIN slas

答案 2 :(得分:2)

insert into period_states select null, periods.id, slas.id from periods, slas

答案 3 :(得分:0)

查看“insert into .... select”http://dev.mysql.com/doc/refman/5.1/en/insert-select.html语法。 ......非常像其他答案所显示的那样。