2016-11-26 99 views
0

这是表:查询中的SQL:为什么查询返回不同的结果?

CREATE TABLE position 
(
    id BIGINT NOT NULL 
    ,remark CHARACTER VARYING(255) 
    ,uid CHARACTER VARYING(255) 
    ,version INTEGER 
    ,weight CHARACTER VARYING(255) 
    ,CONSTRAINT position_pkey PRIMARY KEY (id) 
    ) 其中每添加一条数据生成一个uid 
    ,"version" initialize = 1; 

每修改一条数据 
    ,uid不变 
    ,version + 1; 

我需要相同的UID的查询,版本号的最大数据。

这是我的SQL:

select * 
from position as c 
where c.id in (select max (d.id) from position as d group by d.uid); 

但它返回错误的数据。

select * 
from position as c 
where c.version in (select max (d.version) 
        from position as d 
        group by d.uid); 

为什么此查询返回不同的结果?

+0

[我如何问一个**好**问题?](http://stackoverflow.com/help/how-to-ask) –

回答

0

第一个查询会从位置表中最大的ID,并仅在该ID匹配

第二个查询会从位置表中的最高版本,只有位置相匹配,其中返回位置列返回位置列

也就是说,如果你有以下

ID  Position 
1  1 
2  2 
3  3 
4  3 

第一查询将返回只有4行。第二个将返回第3和第4行

+0

为什么这个查询返回不同的结果? –

+0

由于您有2行3位(即最大位置),但只有1行ID 4(即最大ID) –

相关问题