レコードが更新されないテーブルを使用しています。変更が発生すると、新しいリビジョンが挿入されます。リビジョンは、シリアル フィールドと場所フィールドによって関連付けられます。つまり、同じテーブル内のプライマリ レコードとそれに対応するリビジョンには、その場所内で一意のシリアル番号がありますが、シリアルは別の場所で再利用される可能性があります。リビジョン フィールドは、リビジョンごとに 1 ずつ増加します。
ステータスが 4、5、または 6 のすべてのレコードを選択しようとしていますが、シリアル番号と場所が一致するレコードよりも高いリビジョン番号を持つレコードは他にありません。これを行う方法がわかりません。
CREATE TABLE `table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`serial` int(10) NOT NULL DEFAULT '0',
`location` int(10) NOT NULL DEFAULT '0',
`revision` int(3) NOT NULL DEFAULT '0',
`status` int(1) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 ;