2017-06-21 16 views
0

あるテーブルの中のplayer_idが別のテーブルのidと一致する別のテーブルの内容で1つのテーブルを更新しようとしています。MySQL UPDATEエラーの列が存在しません

UPDATE match_request 
SET first_name = users.first_name, last_name = users.last_name, phone = users.phone, email = users.phone 
WHERE player_id = users.id 

しかし、これは動作しませんなぜ私は私の人生のために把握することはできません。

私のクエリがあります。エラーは、users.idが未知の列であることですが、確かに存在し、すべて小文字です。

+0

を埋めなければなりませんMERGE文についてお読みください。あなたはどこにクエリのユーザーテーブルを定義しましたか? –

+0

あなたのクエリに 'users'というテーブルはありません。 'users.first_name'はどこにありますか? – Eric

答えて

1

usersテーブルに参加する必要があります。

あなたが INNER JOIN指定する必要が
UPDATE match_request AS m 
JOIN users AS u ON m.player_id = u.id 
SET m.first_name = u.first_name, m.last_name = u.last_name, m.phone = u.phone, m.email = u.phone 
+0

これは完全にあなたに感謝しました!私にとって急な傾斜曲線私は完全なゼロからWebアプリケーションを開発していると私の知識のギャップがあります!私は10分後にこの回答を受け入れます。再度、感謝します! – James

0

:ここ

UPDATE match_request 
INNER JOIN users ON match_request.player_id = users.id 
SET match_request.first_name = users.first_name, 
    match_request..last_name = users.last_name, 
    match_request..phone = users.phone, 
    match_request..email = users.phone
0

を、SQLクエリのこの種は、そのような例が

UPDATE table_name 
SET column_name1 = 'XXXX', column_name2 = 5 
WHERE column_named_id = 3; 
として与え、スカラー値、文字、文字列、または結合テーブルの値を必要とします

ここでは、where句を別のテーブルのカラム名users.idと組み合わせて使用​​します。

最初にテーブルに参加し、where節をwhatevet usersテーブルとして使用する必要があります。ここで

UPDATE match_request AS t1 
INNER JOIN users ON t1.primary_key_id = users.foreign_key_id 
SET t1.first_name = users.first_name, t1.last_name = users.last_name, t1.phone = users.phone, t1.email = users.phone 
WHERE t1.player_id = users.id 

あなただけinner join声明

関連する問題