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

Posted

技术标签:

【中文标题】MySQL - 更新/设置一个表中的列等于另一个表中的 MAX 值【英文标题】:MySQL - Update/Set a column in one table equal to MAX value from another table 【发布时间】:2016-12-01 11:52:05 【问题描述】:

我发现了很多我正在尝试做的事情,但只有在做 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'

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

【问题讨论】:

【参考方案1】:

子选择怎么样?

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

【讨论】:

这比我尝试的解决方案完美且简单得多。感谢您抽出宝贵时间回复!【参考方案2】:

更新表_1 设置 column_1=(从 table_2 中选择 max(salary) 作为薪水) 1

【讨论】:

你从哪里拿列薪水?这显示了您如何解决问题,但没有为@evilpenguins 答案添加任何内容,并且格式不正确。不知道谁赞成这个。 请在发布您的答案之前查看其他答案。正如@Philipp 所指出的,在您之前完成了一个非常相似的答案,它具有更好的格式和上下文名称。感谢您的回复,但请查看答案指南 (***.com/help/how-to-answer),您会发现您的反馈更受重视。

以上是关于MySQL - 更新/设置一个表中的列等于另一个表中的 MAX 值的主要内容,如果未能解决你的问题,请参考以下文章

MYSQL:我想用另一个表中的值更新表中的所有行,其中第一个表中的值等于第二个表

MySQL - 使用另一个表中的列排序行并且不重复数据

如果一个表的列等于第二个表中的列,则在第三个表中插入值,python - mysql

MySQL:使用另一个表中的 COUNT 更新表?

使用另一个表中的信息更新表中的列

创建一个触发器,当另一个表中的列更新时更新一个表上的列