我的表(称为 SubTask
)中有数据,如下所示:
STID ID HIVAL TASK
1 4 ...
2 4
3 4
4 4 1
5 5
6 5
7 5
8 5
9 5 1
如您所见,hival
列标有 1,表示每个组中最高的 stid
(stid
是一个唯一的数字) )。我无法弄清楚如何更新表以反射(reflect)这一点。使用以下查询我可以选择记录:
select stid, id, task from subtask where stid in (select max(stid) from subtask group by id)
选择后,如何更新记录以在 hival
列中添加 1?
最佳答案
那个 hival 列完全是多余的,拥有它会适得其反。正如您已经发现的,更新它是一个复杂的查询,并且会对性能造成很大影响。更糟糕的是,每次数据更改时您都必须更新它。
只需删除该列即可执行
SELECT max(stid), id from subtask GROUP BY id
关于MySQL 更新组内的 MAX id,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43763657/