此查询不会返回我期望的内容。为什么呢?
表格:
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 :(得分: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的记录...