【问题标题】:MySQL - Update/Set a column in one table equal to MAX value from another tableMySQL - 更新/设置一个表中的列等于另一个表中的 MAX 值
【发布时间】: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'

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

【问题讨论】:

    标签: mysql join sql-update inner-join


    【解决方案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 所指出的,在您之前完成了一个非常相似的答案,它具有更好的格式和上下文名称。感谢您的回复,但请查看答案指南 (stackoverflow.com/help/how-to-answer),您会发现您的反馈更受重视。
    猜你喜欢
    • 2016-11-09
    • 2023-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-08
    • 1970-01-01
    • 2018-06-11
    • 2022-07-08
    相关资源
    最近更新 更多