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:我想用另一个表中的值更新表中的所有行,其中第一个表中的值等于第二个表