2017-06-21 46 views
0

我試圖用另一個表中的player_id與另一個表中的id相匹配的內容更新一個表。MySQL更新錯誤列不存在

我的查詢是:

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

請閱讀有關合並聲明。你在哪裏定義了查詢中的用戶表? –

+0

我的查詢中沒有看到任何名爲'users'的表。 'users.first_name'從哪裏來? – Eric

回答

1

您需要加入users表。

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

你需要指定一個INNER JOIN

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用戶表格;

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聲明