2011-06-17 11 views
1

私はフォーラムのようなウェブサイトのためのデータベースを持っています。それは、外部キーを持つ他のテーブル( '投稿'、 '投票'など)にリンクされている 'ユーザー'テーブルを持っています。1つのフィールドを1つのクエリで共有する複数のテーブルのレコードを更新するにはどうすればよいですか?

2人のユーザーを1人にマージする機能を実装しています。すべてのテーブルを再リンクする必要があります。だから私はこのようなクエリを構築したいと思います(この場合、user_id = 1は手を使わないユーザのidで、user_id = 2は最初のものにマージされるユーザのIDです)。

UPDATE posts, votes ... SET user_id=1 WHERE user_id=2 

当然ですが、エラーが発生しました。「フィールドリストのuser_id列があいまいです。」

私の質問です:どのようにして1つのクエリで必要な結果を達成できますか? (可能であれば)

EDIT:実際のテーブル数は約6ですので、回答で考慮に入れることができれば非常に感謝しています。

答えて

2

[Table_Name] .Column形式で値を設定してみてください。

の代わりに次のよう

+0

だから、「UPDATE投稿、投票SET posts.user_id = 1、votes.user_id = 1 WHERE posts.user_id = 2、votes.user_id = 2」となっていますか?私はここで有効なMySQLコードを持っているのか分からない。 – sbichenko

+0

@exizt:posts.user_id = votes.user_idとposts.user_id = 2 – Gerrat

+0

しかし、実際に約6つのテーブルがある場合はどうなりますか? (申し訳ありませんが私は元の記事でそれを言及していない)。 – sbichenko

0

何かが何をすべきposts.user_idを使用してみてくださいUSER_ID使用。

UPDATE posts SET user_id=votes.user_id 
    FROM posts INNER JOIN votes ON posts.something=votes.something 

複数のテーブルを更新する必要がある場合は、順番に更新を実行します。

関連する問題