簡體   English   中英

查詢中的SQL:為什么查詢返回不同的結果?

[英]SQL in query : why query returns different results?

這是表:

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行

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM