Предположим, у меня есть тест таблицы ниже:комплекс SQL-запрос с группой по и имея в состоянии
------------------------------
id | active| record
------------------------------
3 | O | 2015-10-16
3 | O | 2015-10-15
3 | N | 2015-10-14
4 | N | 2015-10-15
4 | O | 2015-10-14
Я хочу сделать обновление на столе на линиях с:
- идентификатор, имеющий столбец active = 'O' более одного раза.
- Среди строк, имеющих активную = 'O' более одного раза, обновление должно изменить значение active на 'N', за исключением одного с max (запись), которое останется с активным = 'O'.
В моем примере, идентификатор, имеющий в столбце Active = 'O' больше, чем один раз ID = 3.
id |active | record
------------------------------
3 | O | 2015-10-16
3 | O | 2015-10-15
3 | N | 2015-10-14
Я хочу иметь этот результат:
id |active | record
------------------------------
3 | O | 2015-10-16
3 | N | 2015-10-15
3 | N | 2015-10-14
Я попытался это запрос, но есть ошибка:
update test as t1,
(select id
from test
where active = 'O'
group by id
having count(*) > 1) as t2
set t1.actif = 'N'
where t1.record != max(t2.record);
Заранее благодарен!
Я использую MySQL. – Jake