2013-01-09 78 views
1

我有3個表,其中一個稱爲訂戶,一個用戶,另一個稱爲博客。他們每個看起來都如下。基於另一個表的可變數量的MySQL的多個插入

CREATE TABLE IF NOT EXISTS `subscribers` (
    `user_id` int(11) NOT NULL, 
    `blog_id` int(11) NOT NULL, 
); 

CREATE TABLE IF NOT EXISTS `users` (
    `id` int(11) NOT NULL, 
    `name` varchar(255) 
); 

CREATE TABLE IF NOT EXISTS `blogs` (
    `id` int(11) NOT NULL, 
    `name` varchar(255), 
    `user_id` int(11) 
); 

我有哪裏的API在我們的數據庫會自動創建博客記錄的情況下,這些自動創建的博客都分配相同的用戶ID(在這種情況下,123),這樣它就知道它們究竟來自和屬於導入API。現在需要爲這些API發起的博客創建用戶來照顧他們。我使用基本插入創建了用戶123,但現在我必須通過插入或一系列插入將此用戶訂閱到他們擁有的每個博客。我想知道是否有可能用一個查詢來做到這一點。事情是這樣的,但我知道我寫的都不行:

INSERT INTO `subscribers` (`user_id`,`blog_id`) 
VALUES 
(123, (SELECT id FROM `blogs` WHERE `user_id` = 123)); 

是否有可能做的基礎上以某種方式行的可變數量多插入,我研究,我無法找到答案然而。感謝您的幫助。

回答

9

這是如何做到這一點:

INSERT INTO `subscribers` (`user_id`,`blog_id`) 
    SELECT 123, id FROM `blogs` WHERE `user_id` = 123; 

甚至

INSERT INTO `subscribers` (`user_id`,`blog_id`) 
    SELECT user_id, id FROM `blogs` WHERE `user_id` = 123; 
+0

謝謝你,即使我重新連接所有多餘的東西在我的生產代碼完全執行。 – usumoio

相關問題