Комментарии 3
HAVING еще удобно использовать с под запросом. Например HAVING (SELECT TOP 1 1 FROM table where table.cid=query.cid).
Всему, свое время. Про подзапросы, я скорее всего, буду рассказывать в следующей части, и не в первую очередь, а где и как их применять это уже насколько хватит фантазии. ;) Я специально пока не затрагивал их, т.к. с подзапросами, начинающие, без знания других основных возможностей оператора SELECT, порой такие трехэтажные конструкции могут нагородить…
В вашем примере, вы наверно хотели сказать, что-то типа:
или
?
Примеры в данном случае абсолютно абстрактные и не несут какого-то определенного смысла.
В случае использования EXISTS, нет смысла писать (SELECT TOP 1), достаточно (SELECT *), оптимизаторы современных СУБД (по крайней мере могу судить по MS SQL и Oracle), воспримут это абсолютно одинаково.
В вашем примере, вы наверно хотели сказать, что-то типа:
SELECT DepartmentID,SUM(Salary) SalaryAmount
FROM Employees emp
GROUP BY DepartmentID
HAVING EXISTS(SELECT * FROM Departments dep WHERE dep.ID=emp.DepartmentID)
или
SELECT DepartmentID,SUM(Salary) SalaryAmount
FROM Employees emp
GROUP BY DepartmentID
HAVING (SELECT TOP 1 dep.Name FROM Departments dep WHERE dep.ID=emp.DepartmentID ORDER BY dep.Name)=N'ИТ'
?
Примеры в данном случае абсолютно абстрактные и не несут какого-то определенного смысла.
В случае использования EXISTS, нет смысла писать (SELECT TOP 1), достаточно (SELECT *), оптимизаторы современных СУБД (по крайней мере могу судить по MS SQL и Oracle), воспримут это абсолютно одинаково.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Учебник по языку SQL (DDL, DML) на примере диалекта MS SQL Server. Часть третья