2013-03-07 27 views
0

此查詢不會返回我所期望的。爲什麼?Android SQLite3異常與DISTINCT?

表:

create table t 
(
    comment varchar(10), 
    id int 
); 

數據:

insert into t values ('C1', 1); 
insert into t values ('C2', 2); 
insert into t values ('C3', 3); 
insert into t values ('C4', 4); 
insert into t values ('C5', 5); 
insert into t values ('C6', 6); 
insert into t values ('C7', 7); 
insert into t values ('C8', 8); 
insert into t values ('C9', 9); 
insert into t values ('C1', 10); 

查詢:

select distinct comment from t order by id desc limit 8; 

其結果是:

C9 
C8 
C7 
C6 
C5 
C4 
C3 
C2 

當我離開DISTINCT時,我得到最後一行,但我想抑制重複。 我的解決方法返回正確的結果集:

select comment from t group by comment order by max(id) desc limit 8; 

不過我很好奇,如果我的查詢是無效的(T-SQL的例子並不在一個查詢中同時允許一個DISTINCT和ORDER BY,除非該命令列是選擇列表)?

回答

0

我想,只是猜測,C1是出於選擇因爲它有一個愚蠢,我猜它SQL - 選擇這個愚蠢的ID爲10而不是1.這就是爲什麼你得到2至9的IDS(完全8就像你從SQL中通過限制8所要求的那樣)。請檢查我的理論是否屬實。我猜它的工作流程如同ID爲1的記錄,確定沒有錯誤,接下來,id2,沒有錯過,確定...,編號爲10 - 是編號爲1的編號,編號爲1的編號刪除,編號爲10的記錄...

+0

不是一個真正的答案,但我會接受它作爲唯一的答案。 – cdonner 2014-05-22 15:57:11