MySQL基于另一个表多次插入可变数量的行

时间:2013-01-09 00:42:04

标签: mysql sql insert subquery

我有3个表,一个称为订阅者,一个用户,一个称为博客。他们每个人都看起来如下。

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

是否有可能以某种方式基于可变数量的行进行多插入,我已经研究过,但我还没有找到答案。谢谢你的帮助。

1 个答案:

答案 0 :(得分: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;