假设我有如下表测试:复杂的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
我想做的事情上与行表的更新:
- 具有栏的ID活跃='O'不止一次。
- 其中有多次激活='O'的这些行中,更新应将激活的值更改为'N',除了max(record)将保持激活状态='O'。
在我的例子,有列有效= 'O' 不止一次的ID与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