MySQL - 在一个表中更新/设置一个等于另一个表的MAX值的列

时间:2016-07-27 12:49:35

标签: mysql join sql-update inner-join

我已经找到了一些我想要做的点击,但只有在执行SELECT并且我无法使这些方法与UPDATE一起使用时

Table: Project
Site | I-Date | Status

Table: Schedule
Site | F-Date | Status

这是我现在的查询,但我想保证项目日期仅设置为MAX日期,因为每个站点可能有多个条目,但schedule中的日期不同。

UPDATE project
    INNER JOIN schedule on project.site = schedule.site 
    SET project.i-date = schedule.f-date, project.status = 'complete'
    WHERE project.site = 'site123'

我试过这样做:

UPDATE project
    INNER JOIN schedule on project.site = schedule.site 
    SET project.i-date = MAX(schedule.f-date) as 'f-date', project.status = 'complete'
    WHERE project.site = 'site123'

但这不起作用。我怀疑我需要一些不同的加入方法,但无法获得正确的混合物。

2 个答案:

答案 0 :(得分:6)

子选择怎么样?

UPDATE project
SET 
    project.i-date = (
        SELECT MAX(f-date)
        FROM schedule
        WHERE schedule.site = project.site
    ),
    project.status = 'complete'
WHERE project.site = 'site123'

答案 1 :(得分:0)

更新table_1 set column_1 =(选择max(salary)作为table_2的工资) 其中1