代码之家  ›  专栏  ›  技术社区  ›  JohnBigs

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

  •  0
  • JohnBigs  · 技术社区  · 6 年前

    parent 和桌子 kids

    我想插入新表 parentWithKids

    所以我试着说:

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

    1 回复  |  直到 6 年前
        1
  •  0
  •   Kamal Joshi    6 年前

    我假设遵循模式。

    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