Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
解释以下SQL语句_Sql_Sql Server - Fatal编程技术网

解释以下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