【发布时间】:2013-03-21 17:15:28
【问题描述】:
我是 mysql 的新手,所以希望得到有关此方面的建议:
我有一个包含 3 列的表:id(key int)、frame(int) 和 valid(bool)。身份证是关键。当它们的有效标志在一定数量的帧后没有从 false 变为 true(它死)时,我想删除所有 ids(行)。如果帧在最大帧数(已知)内没有将其有效性从 false 更改为 true,则它不会在下一帧更新,因此会死亡。 id 对所有帧都是全局唯一的,每帧有多个 id。
例如说 id 1 从 frm 1 到 5 是有效的,从 6 到 8 是假的(然后死掉)。另一个 id 2 从 frm 1 到 6 有效,从 7 到 9 为假,然后从 10 到结束再次有效。我只想删除 id 1 在第 6 帧到第 8 帧之间的行,而不触及 id 2。
到目前为止,我找到了所有标记为假的 ID 的最后一帧。 将视图 false_pt_last_frm 更改为 select id as tid, max(frame_number) as frm, valid as vld from ptTable where vld=1 group by tid;
然后我正在考虑将 ptTable 与视图 false_pt_last_frm 加入,以查找视图中在 frm+1 帧上有效的所有点,并从视图中找到该集合之外的 id 并将其删除。但我坚持这一点。
这是一个好方法吗?请举例说明如何有效地做到这一点。
【问题讨论】:
-
嗨,埃文。是否有任何答案解决了您的问题?如果是这样,打勾是个好习惯。这有助于未来的访问者,也有利于回答者。