2011-10-21 17 views
2

現在、mysqlクエリの特定の行に対して更新を発行しようとしています。いくつかの行が正しく更新されていません。私は、更新しようとしているクエリが多数の結合から派生しているため、これが想定されています。結合を含むSELECTステートメントの後にSQLテーブルを更新する

SELECT 
     vtiger_users.user_name, 
     vtiger_troubletickets.*, 
     vtiger_crmentity.* 
    FROM 
     vtiger_troubletickets 
    LEFT JOIN(
     vtiger_crmentity, 
     vtiger_users 
    )ON(
     vtiger_crmentity.crmid = vtiger_troubletickets.ticketid AND 
     vtiger_crmentity.smownerid = vtiger_users.id 
    )WHERE 
     vtiger_troubletickets.status != "Closed" 
    UPDATE vtiger_troubletickets 
LEFT JOIN(vtiger_crmentity, vtiger_users 
)ON 
(vtiger_crmentity.crmid = vtiger_troubletickets.ticketid AND vtiger_crmentity.smownerid = vtiger_users.id) SET smownerid = '6' 
WHERE ticket_no='TT63' 

今や....私が望むデータを返すことに関して、このクエリはうまく動作します。私はこのクエリは、この文で返すデータを更新しようとすると:

UPDATE vtiger_troubletickets t 
LEFT JOIN (vtiger_crmentity, vtiger_users) 
     ON (vtiger_crmentity.crmid = t.ticketid 
     AND vtiger_crmentity.smownerid = vtiger_users.id) 
SET smownerid='1' AND t.status='Abandon' 
WHERE t.ticket_no='TT63' 

それが働いていると言うが、NULLとして値を割り当てるとは別にsmowneridやチケットのステータスを更新しません。ヘルプは非常に感謝しています。ここ

答えて

2

AND

SET smownerid='1' AND t.status='Abandon' 

はカンマでなければなりません:

SET smownerid='1', t.status='Abandon' 

は、MySQLのマニュアルにUPDATE syntaxを参照してください。

UPDATE [LOW_PRIORITY] [IGNORE] table_references 
SET col_name1={expr1|DEFAULT} [, col_name2={expr2|DEFAULT}] ... 
[WHERE where_condition]  ^
          ^comma 
+0

パーフェクト、あなたは長い間に物事を見て、あなたはそれが簡単だった実感参照してください。乾杯 – lockdown

関連する問題