我正在使用一个记录未更新的表。发生更改时会插入新修订。修订由串行字段和位置字段关联,这意味着同一表中的主记录及其对应的修订在该位置内具有唯一的序列号,但是串行可以在另一个位置重用。每次修订时,修订字段都会增加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 ;
答案 0 :(得分:2)
您需要使用子查询:
<强>更新强>
SELECT * FROM table t1
WHERE location = 'location'
AND status IN (4,5,6)
AND revision = (SELECT MAX(revision) FROM table t2 WHERE t2.serial = t1.serial AND t2.location = t1.location)