2010-07-16 163 views
2

我有兩個表:使用基於另一個表的條件更新一組列?

TABLE_1 - 控件ID,代碼, ReportedDate,FiledDate年齡, AgeCategory等,

TABLE_2 - 控件ID,代碼, ReportedDate,FiledDate等,

table_1ControlID外鍵不TABLE_2。我需要將table_1中的ReportedDate更新爲table_2中的ReportedDate,並且Age和AgeCatogory已經計算好了。

我想更新table_1中的這三列,其中ControlID,FiledDate和Code都相同。

現在爲止,我已經:

UPDATE table_1 SET ReportedDate=table_2.ReportedDate, Age='<value>' AgeCategory='<value>' 
     WHERE table_1.ControlID=table_2.ControlID AND 
     table_1.FiledDate=table_2.FiledDate AND table_1.Code=table_2.Code 

如果任何人有怎麼會得到解決的想法???

Anyhelp將不勝感激......

編輯:

我收到提示說MySQL的語法錯誤在'FROM ...'

+0

到底是什麼問題?更新了錯誤的數據嗎?你的SQL有錯誤嗎?請更簡潔。 – 2010-07-16 10:08:56

回答

0
UPDATE table_1 
    JOIN table_2 
    ON table_1.ControlID=table_2.ControlID 
     AND table_1.FiledDate=table_2.FiledDate 
     AND table_1.Code=table_2.Code 
    SET table_1.ReportedDate=table_2.ReportedDate, 
     table_1.Age='<value>', 
     table_1.AgeCategory='<value>'; 
0

從沒有允許UPDATE語法1內:

UPDATE [LOW_PRIORITY] [IGNORE] tbl_name 
    SET col_name1=expr1 [, col_name2=expr2 ...] 
    [WHERE where_condition] 
    [ORDER BY ...] 
    [LIMIT row_count] 

如果您想從第二張表中獲取內容,你可能想使用子查詢。

試試這個代碼:

UPDATE table_1 SET ReportedDate= 
    (SELECT ReportedDate FROM table_2 
     WHERE table_1.ControlID = table_2.ControlID 
     AND table_1.Code = table_2.Code 
    ), Age='<value>' AgeCategory='<value>' 
+0

Thanx,我發現在我們的'SO'中發現了類似的問題。我修改了查詢。發生同樣的錯誤。你能幫我解決嗎?我可以通過哪種方式修改它? – Venkat 2010-07-16 12:03:58

+0

我剛加了一些代碼。我不確定,天氣是否有效,但這是我可能嘗試的。 – JochenJung 2010-07-16 12:19:55