使用基于另一个表的条件更新一组列?
我有两个表:使用基于另一个表的条件更新一组列?
TABLE_1 - 控件ID,代码, ReportedDate,FiledDate年龄, AgeCategory等,
TABLE_2 - 控件ID,代码, ReportedDate,FiledDate等,
在table_1
ControlID
是外键而不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 ...'
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>'
Thanx,我发现在我们的'SO'中发现了类似的问题。我修改了查询。发生同样的错误。你能帮我解决吗?我可以通过哪种方式修改它? – Venkat 2010-07-16 12:03:58
我刚加了一些代码。我不确定,天气是否有效,但这是我可能尝试的。 – JochenJung 2010-07-16 12:19:55
到底是什么问题?更新了错误的数据吗?你的SQL有错误吗?请更简洁。 – 2010-07-16 10:08:56