使用基于另一个表的条件更新一组列?

问题描述:

我有两个表:使用基于另一个表的条件更新一组列?

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

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>'; 

从没有允许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