解释以下SQL语句
我正在使用下表:解释以下SQL语句,sql,sql-server,Sql,Sql Server,我正在使用下表: create table EmpDup(empid int,name varchar(20)) insert into EmpDup values(1,'Andy') insert into EmpDup values (1,'Andy') insert into EmpDup values(2,'Bill') insert into EmpDup values(2,'Bill') insert into EmpDup values (2,'Bill') inser
create table EmpDup(empid int,name varchar(20))
insert into EmpDup values(1,'Andy')
insert into EmpDup values (1,'Andy')
insert into EmpDup values(2,'Bill')
insert into EmpDup values(2,'Bill')
insert into EmpDup values (2,'Bill')
insert into EmpDup values (3,'Chris')
表更改为在插入行后添加标识列:
alter table EmpDup add sno int identity(1,1)
有人能解释一下下面的查询是如何工作的吗
select sno from EmpDup D where
1<(select count(*) from EmpDup A where A.empid=D.empid and A.name=D.name and
D.sno>=A.sno)
从EmpDup D中选择sno,其中
1=A.sno)
我想不出来。它给出了以下结果:
sno 2 4 5
它为具有多个其他sno整数的emp(loyees)返回sno整数。运行此操作,您将看到sno=2显示两次,sno=4显示两次,sno=5显示三次。 sno的其他值只出现一次,因此不符合计数条件
select D.empid, D.sno from EmpDup D
inner join EmpDup A on A.empid=D.empid and A.name=D.name and D.sno>=A.sno
你期望什么样的输出,为什么?不是真的期望任何输出…只是不理解thr查询是如何工作的…在我的脑海中无法将其翻译成简单的英语…不,它没有。如果它是这样做的,那么这三个结果将是“Bill”的三个
sno
id。其中两行是,但不是全部三行。由于D.sno>=A.sno