0

我引入了一个新的多对多表,想知道是否有办法用 2 个表执行 SELECT/INSERT。

表:

  1. 用户
  2. 团体
  3. 用户组(空)

如何将所有用户插入每个组?例如,用所有内容填充 user_groups 表。

user_groups 包含用户和组的外键。

更新显示表结构的更多详细信息:

--
-- 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;
4

1 回答 1

1

你可以做一个插入...选择。

http://dev.mysql.com/doc/refman/5.0/en/insert-select.html

您只需要找到一种方法来选择所需的数据集,如果我对您的理解正确,您希望将每个用户添加到每个组中。具有始终为 true 的连接条件的 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

于 2012-10-01T14:05:55.277 回答