我有以下结构的SQL表:SQL查询前值的每一行
id Integer, (represents a userId)
version Integer,
attribute varchar(50)
所以一些样本行是:
4, 1, 'test1'
4, 2, 'test2'
4, 3, 'test3'
我需要生成以下格式输出:
4, 1, 'test1', 'test1'
4, 2, 'test2', 'test1'
4, 3, 'test3', 'test2'
所以我输出的格式是:
id Integer,
version Integer,
attribute_current varchar,
attribute_old varchar
我已经试过如下:
select versionTest.id, versionTest.version, versionTest.attribute, maxVersionTest.attribute
from versionTest
inner join
versionTest maxVersionTest
ON
versionTest.id = versionTest.id
AND
versionTest.version =
(Select max(version) currentMaxVersion
from versionTest maxRow
where maxRow.id = id);
上面的查询执行,但返回不正确的结果。它只返回最大版本,而不是返回所有版本的行。
约我应该怎么解决我的查询产生正确的结果任何想法?谢谢!
注 - 版本号,但不保证顺序从1开始的我实际的数据库中有一些不寻常的版本号(即用户7有3版和第15版没有4,5,6,等...) 。
这如果op是查询单个ID – Andomar 2013-04-24 13:19:16
但可以很容易地适应用多个ID – Strawberry 2013-04-24 13:22:56
@Andomar工作权工作。 – 2013-04-24 13:23:26