0

这个查询没有返回我所期望的。为什么?

桌子:

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

4

1 回答 1

0

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

于 2013-09-11T20:10:59.417 回答