Как обновить столбец, запустив max () в том же столбце? - PullRequest
0 голосов
/ 05 декабря 2018

У меня есть три строки данных:

temp_number        tempdate
A12345              null
A12345001          '2018-01-01'
A12345002          '2018-01-02'

Я хочу установить tempdate для A12345 на 2018-01-02, используя этот запрос:

update table_a1 set tempdate = (select max(tempdate) from table_a1 where 
substr(temp_number,1,6) = 'A12345')
where temp_number = 'A12345'

Запрос выше неработает, и я хочу обновить значение с помощью функции max() вместо указания какого-либо фактического значения.

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

Ваше 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;
0 голосов
/ 05 декабря 2018

вы можете использовать соединение в подзапросе для максимального значения

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  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...