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 を作成しましたが、このユーザーを、挿入または一連の挿入を介して所有するすべてのブログに登録する必要があります。これを 1 つのクエリで実行できるかどうかを知りたいです。このようなものですが、私が書いたものがうまくいかないことに気づきました:

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 に答える