http://sqlfiddle.com/#!3/78273/1
create table emptb1
(
id int,
name varchar(20),
dept int
)
insert into emptb1 values (1,'vish',10);
insert into emptb1 values (2,'vish',10);
insert into emptb1 values (3,'vish',30);
insert into emptb1 values (4,'vish',20);
create table depttb1
(
id int,
name varchar(20)
)
insert into depttb1 values(10,'IT')
insert into depttb1 values(20,'AC')
insert into depttb1 values(30,'LIC')
select * from emptb1
select e.id, e.name, a.id
from emptb1 e
cross apply
(
select top 1 * from depttb1 d
where d.id = e.dept
order by d.id desc
) a
内部結合と似ていますが、関数で動作するため、クロス適用を学習しようとしていました。
上記のクエリでは、注文 d.id desc は 30 である最上位の 1 番目の ID のみを提供し、dept id = 30 の従業員を返す必要があるため、dept=30 のみを取る必要があると想定していますが、すべての行とすべての深い。
クエリの何が問題なのか、または相互適用の概念の解釈が間違っています。