Correlated Subquery
От: Norex Россия  
Дата: 20.07.09 10:44
Оценка:
create table table2 (cno int, cnt int)
go
insert into table2 (cno, cnt) values (1, 1)
insert into table2 (cno, cnt) values (1, 2)
insert into table2 (cno, cnt) values (2, 1)
insert into table2 (cno, cnt) values (3, 4)
insert into table2 (cno, cnt) values (3, 5)
insert into table2 (cno, cnt) values (3, 9)
insert into table2 (cno, cnt) values (4, 99)

select * FROM table2 WHERE EXISTS
(SELECT t.* FROM table2 t
WHERE table2.cno = t.cno
AND table2.cnt > t.cnt)

Объясните пожалуйста, какова логика формирования результата?
sql correlated subquery
Re: Correlated Subquery
От: avpavlov  
Дата: 20.07.09 15:32
Оценка:
Здравствуйте, Norex, Вы писали:

N>create table table2 (cno int, cnt int)

N>go
N>insert into table2 (cno, cnt) values (1, 1)
N>insert into table2 (cno, cnt) values (1, 2)
N>insert into table2 (cno, cnt) values (2, 1)
N>insert into table2 (cno, cnt) values (3, 4)
N>insert into table2 (cno, cnt) values (3, 5)
N>insert into table2 (cno, cnt) values (3, 9)
N>insert into table2 (cno, cnt) values (4, 99)

N>select * FROM table2 WHERE EXISTS

N> (SELECT t.* FROM table2 t
N> WHERE table2.cno = t.cno
N> AND table2.cnt > t.cnt)

N>Объясните пожалуйста, какова логика формирования результата?


Для каждого cno проверить что существуют такие строки с тем же cno, где cnt меньше

Иными словами, для каждого cno возвращаются те строки, в которых cnt не минимальный
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.