0

我正在使用一个记录没有更新的表。发生更改时会插入新修订。修订由序列字段和位置字段相关联,这意味着同一表中的主记录及其相应修订在该位置具有唯一的序列号,但该序列可以在另一个位置重复使用。修订字段随着每个修订增加 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 ;
4

1 回答 1

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)
于 2013-01-28T19:15:48.110 回答