2

異なるテーブルから複数の列を挿入する必要がありますが、同じ問題が発生し続けます。

問題は次のとおりです。TableA.ColumnA から TableB.ColumnA に問題なく列を INSERT できます。しかし、次に、TableC.columnA を TableB.columnB に INSERT する必要があります。この INSERT コマンドは、データの ID を変更する余分な行を追加します。

私の挿入コマンドと、一致する ID を取得するために実行していた UPDATE コマンド (失敗) を以下に示します。

insert コマンドで余分な行を追加できることは知っていますが、ID が一致するようにこれを渡すにはどうすればよいですか?

列に自動インクリメントが設定されている可能性があると思いましたが、設定されていないため、問題はないようです。どんな助けでも大歓迎です。

(1) INSERT INTO users_posts 
           (author_id, 
            post_id, 
            post_title)  
    SELECT contents.user_id, contents.id, contents.title 
    FROM contents 
    WHERE contents.id = id

(2) INSERT INTO users_posts 
           (post_content)  
    SELECT content_bodies.content 
    FROM content_bodies 
    WHERE content_bodies.id = id

(3) UPDATE users_posts 
    SET post_content  = (SELECT content_bodies.content  
                         FROM content_bodies  
                         WHERE content_bodies.id = users_posts.post_id)
4

1 に答える 1

1

あなたの質問が正しいと理解できれば、実際には 2 番目と 3 番目のステートメントではなく、更新ステートメントだけを更新する必要があります。users_posts.post_content

挿入を行うと、常に (制約などの他の理由で失敗しないと仮定して) 新しい行が挿入されます。したがって、キーワードINSERT.

IDに基づいてusers_postsテーブルからテーブルに投稿コンテンツを追加するこのステートメントを試してください!content_bodies

UPDATE users_posts AS u 
JOIN content_bodies AS b 
ON b.id = u.post_id 
SET u.post_content = b.content;

このSQLFiddleで動作を確認してください

編集

このクエリを実行して、データが正しく一致するかどうかをお知らせください

SELECT * FROM users_posts u
JOIN content_bodies AS b 
ON b.id = u.post_id 
于 2013-07-10T22:44:55.813 に答える