|
От: |
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)
Объясните пожалуйста, какова логика формирования результата?
|
От: |
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 не минимальный
Пока на собственное сообщение не было ответов, его можно удалить.