如何通过在同一列上运行max()更新列?

时间:2018-12-05 10:52:19

标签: mysql sql

我有三行数据:

never

我想使用以下查询将MyComponentBase<SBase>上的tempdate设置为temp_number tempdate A12345 null A12345001 '2018-01-01' A12345002 '2018-01-02'

A12345

上面的查询不起作用,我想使用2018-01-02函数而不是给出任何实际值来更新值。

2 个答案:

答案 0 :(得分:1)

您的WHERE子句有误,您应该仅更新NULL条记录:

UPDATE table_a1
SET tempdate = (SELECT MAX(tempdate)
                FROM table_a1
                WHERE temp_number LIKE 'A12345%')
WHERE temp_number = 'A1234' AND tempdate IS NULL;

答案 1 :(得分:0)

您可以在子查询上使用联接以获取最大值

update table_a1 m
INNER JOIN (
    select max(tempdate)  max_date, substr(temp_number,1,6) temp1
    from table_a1 
    where substr(temp_number,1,6) = 'A12345')
    group by temp
) t on t.temp1 =  m.tempdate 
set tempdate = t.max_date