Использование COUNT вместо EXISTS

Подчеркнем, что все формулировки с ANY и ALL могут быть в точности выполнены с EXISTS, в то время, как наоборот будет неверно. Хотя в этом случае, также верно и то, что EXISTS и NOT EXISTS подзапросы могут обманывать при выполнении тех же самых подзапросов с COUNT(*) в предложения SELECT подзапроса. Если больше чем ноль строк выводе будет подсчитано, это эквивалентно EXISTS; в противном случае это работает также как NOT EXISTS . Следующее является этому примером (вывод показывается в Рисунке 13.12 ):    
SELECT * FROM Customers outer WHERE NOT EXISTS ( SELECT * FROM Customers inner WHERE outer.rating < = inner.rating AND inner.city = ‘ Rome ‘ );

SQL Execution Log

SELECT *
FROM Customers outer
WHERE NOT EXISTS
(SELECT * FROM Customers inner
WHERE outer.rating <= inner.rating AND inner.city = ‘ Rome ‘);

cnum
cname
city
rating
snum

2004
Grass
Berlin
300
1002

2008
Cisneros
San Jose
300
1007

Рисунок 13.12: Использование EXISTS с соотнесенным подзапросом    
Это должно также быть выполнено как    
SELECT * FROM Customers outer WHERE 1 > ( SELECT COUNT (*) FROM Customers inner WHERE outer.rating < = inner.rating AND inner . city = ‘ Rome ‘ );     Вывод к этому запросу показывается в Рисунке 13.13. Теперь Вы начинаете понимать, сколько способов имеется в SQL. Если это все кажется несколько путанным на этой стадии, нет причины волноваться. Вы обучаетесь, чтобы использовать ту технику которая лучше всего отвечает вашим требованиям и наиболее понятна для вас. Начиная с этого места, мы хотим показать Вам большое количество возможностей, что бы вы могли найти ваш собственный стиль.

SQL Execution Log

SELECT *
FROM Customers outer
WHERE 1 > (SELECT COUNT (*) |FROM Customers inner
WHERE outer.rating <= inner.rating AND inner.city = ‘ Rome ‘);

cnum
cname
city
rating
snum

2004
Grass
Berlin
300
1002

2008
Cisneros
San Jose
300
1007

Рисунок 13.13: Использование COUNT вместо EXISTS  
 
 

‹ Комбинация из EXISTS и объединения
Вверх
Использование NOT EXISTS ›

Айтистанция
Добавить комментарий