2016-05-15 11 views
-3

を説明:行を挿入した後、ID列を追加するように変更私は、次の表で働いています、次のSQL

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) 

私はそれを理解することができません。

SnO 2を4

+1

期待していた出力は何ですか? – hvd

+0

実際には何の出力も期待していません...質問の仕組みを理解していないだけです...私の頭の中で単純な英語に翻訳できない... – Tejas

答えて

-2

これはEMPつ以上の他のSNO整数を有する(loyees)ためSNOの整数を返し:これは、以下の結果を与えます。

+0

いいえ、それはありません。それがあれば、3つの結果は「Bill」の3つの「スヌー」IDになります。そのうち2つはありますが、3つすべてではありません。 – hvd

+0

ほとんどの場合、 'D.sno> = A.sno'のために、最初の行は返されず、他の行が返されます –

0

これを実行すると、sno = 2が2回表示され、sno = 4が2回表示され、sno = 5が3回表示されます。 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 
関連する問題