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

时间:2010-07-16 10:01:38

标签: mysql inner-join

我有两张桌子:

  

table_1 - ControlID,代码,   ReportedDate,FiledDate Age,   AgeCategory等,

     

table_2 - ControlID,代码,   ReportedDate,FiledDate等,

ControlID中的{p> table_1 外键不在table_2 中。我需要使用table_2中的ReportedDate更新table_1中的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将不胜感激......

编辑:

我收到错误,指出'FROM ...'

处的MySQL语法错误

2 个答案:

答案 0 :(得分:0)

UPDATE语法1中不允许使用FROM:

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

答案 1 :(得分: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>';