2012-10-01 69 views
0

我已經介紹了一個新的多對多表,並想知道是否有辦法做一個SELECT/INSERT與2表。mysql質量插入多對多表

表:

  1. 用戶
  2. user_groups(空)

我怎樣才能插入所有用戶到每一個組?例如用一切填充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

,我可以通過所有的循環爲此在PHP腳本用戶,但只是想知道這是可能的只有SQL –

+0

字面更新一切,或一些更具體的數據? – raina77ow

回答

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

+0

完美,我從來沒有想過要做1 = 1。我試圖從2個表中選擇不工作。 –