我试图在我的查询中使用distinct
select distinct tvpAuditevent.TESTSEQUENCEID
from tvpAuditevent
where tvpAuditevent.Name = 'WorkstepCompleted';
它工作正常。并且只给我100个结果
但现在如果我添加其他列
select distinct tvpAuditevent.TESTSEQUENCEID, tvpAuditevent.USERNAME
from tvpAuditevent
where tvpAuditevent.Name = 'WorkstepCompleted';
它给了我大约200个结果,这是错误的。
我只需要那100个结果,但除了testsequenceId之外还需要其他列。
如果有办法,请告诉我。
由于
答案 0 :(得分:3)
如另一个答案所述,distinct
关键字适用于select
语句中的所有列。您不能将其限制为只有一列。
相反,您可以使用group by
和聚合函数。例如,以下内容返回第二列中的最小值:
select ae.TESTSEQUENCEID, min(ae.USERNAME)
from tvpAuditevent ae
where ae.Name = 'WorkstepCompleted'
group by ae.TESTSEQUENCEID;
事实上,distinct
中的select
关键字只是一种符号方便。以下内容:
select distinct col1, col2, . . ., coln
from table t
做同样的事情:
select col1, col2, . . . coln
from table t
group by col1, col2, . . . coln
答案 1 :(得分:0)
关键字DISTINCT
只会从结果集中删除重复的结果。当您选择多个列时,它不能应用于单个列。
你想要什么并不清楚。我们假设我们有以下数据,其中第一个值是您想要分开的列,另一个是您希望显示为&#34的列;额外的数据"。
A,B
A,C
结果应该是什么? A,B
或A,C
?
答案 2 :(得分:0)
SELECT S.TESTSEQUENCEID,
AE.tvpAuditevent.USERNAME
FROM tvpAuditevent AE
JOIN (select distinct tvpAuditevent.TESTSEQUENCEID
from tvpAuditevent where tvpAuditevent.Name = 'WorkstepCompleted' ) S
ON S.TESTSEQUENCEID = AE.TESTSEQUENCEID
where AE.tvpAuditevent.Name = 'WorkstepCompleted'