我已经介绍了一个新的多对多表,并且想知道是否有办法用2个表进行SELECT / INSERT。
表:
如何将所有用户插入每个组?例如,用所有内容填充user_groups表。
user_groups包含用户和组的forien密钥。
使用显示表结构的更多详细信息进行更新:
--
-- Table structure for table `groups`
--
CREATE TABLE IF NOT EXISTS `groups` (
`group_id` int(6) NOT NULL AUTO_INCREMENT,
`group_name` varchar(255) NOT NULL,
PRIMARY KEY (`group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Table structure for table `users`
--
CREATE TABLE IF NOT EXISTS `users` (
`user_id` int(6) NOT NULL AUTO_INCREMENT,
`user_name` varchar(255) NOT NULL,
`user_address` varchar(255) NOT NULL,
PRIMARY KEY (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
-- --------------------------------------------------------
--
-- Table structure for table `user_groups`
--
CREATE TABLE IF NOT EXISTS `user_groups` (
`user_group_id` int(6) NOT NULL AUTO_INCREMENT,
`user_id` int(6) NOT NULL,
`group_id` int(6) NOT NULL,
PRIMARY KEY (`user_group_id`),
KEY `user_id` (`user_id`,`group_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
答案 0 :(得分:1)
您可以执行INSERT ... SELECT。
http://dev.mysql.com/doc/refman/5.0/en/insert-select.html
您只需找到一种方法来选择所需的数据集,如果我理解正确,您希望将每个用户添加到每个组。具有始终为真的连接条件的INNER JOIN将使每个用户与每个组匹配。
所以选择就像是
SELECT users.user_id, groups.group_id FROM users INNER JOIN groups ON 1=1
所以整个查询应该像
INSERT INTO user_groups (user_id,group_id) SELECT users.user_id, groups.group_id FROM users INNER JOIN groups ON 1=1