1

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

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

4

1 回答 1

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;
于 2013-01-09T00:44:06.877 回答