Android SQLite3异常与DISTINCT?

时间:2013-03-07 01:16:28

标签: distinct android-sqlite

此查询不会返回我期望的内容。为什么呢?

表格:

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,除非有序列在选择列表中)?

1 个答案:

答案 0 :(得分:0)

我想,只是猜测,C1已经没有选择因为它有一个骗局而且我猜它是SQL选择这个以id 10而不是1的骗局。这就是为什么你有2到9的ids(总共8个)就像你从SQL中通过限制8询问的那样。请检查我的理论是否属实。我猜它的工作流程就像id为1的记录,ok no dupes,next,id2,no dupes,ok ...,id 10 - 是id 1的dupe,删除id为1的记录,添加id为10的记录...