如何从一个表中插入另一个表中有记录的记录插入表中?

时间:2018-12-25 13:38:08

标签: mysql

我有表parent和表kids,父母可以在孩子表中有几个孩子(0个或更多)。

我只想在孩子表中插入有孩子的父母到新表parentWithKids中。

所以我尝试了类似的事情:

INSERT INTO parentWithKids
SELECT *
FROM parent p
INNER JOIN kids k ON p.id = k.parent_id

但它没有运行...这里是什么问题?

1 个答案:

答案 0 :(得分:0)

我采用以下模式。

父母:

CREATE TABLE IF NOT EXISTS `parent` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;

孩子

CREATE TABLE IF NOT EXISTS `kids` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `parent_id` int(11) NOT NULL,
  `name` varchar(255) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;

父母和孩子

CREATE TABLE IF NOT EXISTS `parentwithkids` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `parent_id` int(11) NOT NULL,
  `kids` int(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;

这是检索带有孩子数量的父母名单的最后一个查询。

INSERT INTO parentWithKids(parent_id, kids)
SELECT DISTINCT p.id, count(k.id)
FROM parent p
INNER JOIN kids k ON p.id = k.parent_id
GROUP BY k.parent_id