2017-07-27 64 views
0

我想更正與另一個表格數據後,並列兩列它顯示錯誤。更新選擇與哪裏&CONCAT問題

錯誤代碼:1064.您的SQL語法錯誤;檢查對應於你的MySQL服務器版本的權利 語法

表1中的 手冊:訂單 表2:用戶

我試圖通過現場與user_id比較更新的訂單表字段name在訂單表中。

user_id鏈接到用戶表。我試圖連接first_name & last_name並更新訂單表中的name

UPDATE orders SET 
(name = 
SELECT CONCAT(u.first_name, ' ', u.last_name) as full_name 
FROM users u 
WHERE u.first_name IS NOT NULL OR u.first_name <> ''); 

條件是這樣的。

如果存在的任何user_id ID訂單表應該檢查usersid並選擇& CONCAT first_name & last_name和更新的順序表。

如果訂單表中沒有user_id,則該字段應該更新爲NONE

對我來說,通過查詢來實現它很複雜。我可以在PHP中做到這一點,但沒有推薦。有人能幫忙嗎?

回答

1

假設你有訂單表加入到user_id列,你可以試試這個:

UPDATE orders o SET o.name = 
    IFNULL((SELECT CONCAT(u.first_name, ' ', u.last_name) AS full_name 
      FROM users u 
      WHERE u.user_id = o.user_id 
      AND u.first_name IS NOT NULL 
      AND u.first_name <> ''), 'NONE'); 
+0

錯誤代碼:1054未知列在「o.user_id「where子句中」它沒有采取訂單表列 – TomPHP

+0

我假設您在訂單表上有一個user_id列來加入,否則您如何期望提取與訂單相對應的用戶名? :) – 83N

+0

在訂單表中我有'user_id'和在用戶表中我有'id'這兩個字段都可以加入 – TomPHP