查询中的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);
为什么此查询返回不同的结果?
答
第一个查询会从位置表中最大的ID,并仅在该ID匹配
第二个查询会从位置表中的最高版本,只有位置相匹配,其中返回位置列返回位置列
也就是说,如果你有以下
ID Position
1 1
2 2
3 3
4 3
第一查询将返回只有4行。第二个将返回第3和第4行
+0
为什么这个查询返回不同的结果? –
+0
由于您有2行3位(即最大位置),但只有1行ID 4(即最大ID) –
[我如何问一个**好**问题?](http://*.com/help/how-to-ask) –