我有表parent
和表kids
,父母可以在孩子表中有几个孩子(0个或更多)。
我只想在孩子表中插入有孩子的父母到新表parentWithKids
中。
所以我尝试了类似的事情:
INSERT INTO parentWithKids
SELECT *
FROM parent p
INNER JOIN kids k ON p.id = k.parent_id
但它没有运行...这里是什么问题?
答案 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