SUBQUERIES: 
1. Nested sub queries 
2. Correlated sub queries 
Nested sub queries: 
Query within another sub queries is called nested queries 
It contains three select statements they are 
1. Main query 
2. Sub query 
3. Nested sub query 
TO GET THIRD HIGHEST SALARY FROM EMPLOYEE TABLE 
SELECT MAX(SAL) FROM EMPLOYEE WHERE SAL<MAIN QUERY 
(SELECT MAX(SAL)FROM EMPLOYEE WHERE SAL<SUB QUERY 
(SELECT MAX(SAL)FROM EMPLOYEE))NESTED SUB QUERY 
TO GET DETAILS OF EMPLOYEE WITH SECOND HIGHEST SALARY 
SELECT * FROM EMPLOYEE WHERE SAL> 
(SELECT MAX(SAL)FROM EMPLOYEE WHERE SAL> 
(SELECT MAX(SAL)FROM EMPLOYEE)) 
[EXECUTION STARTS FROM 3RD LINE] 
TO GET THE DETAILS OF THE EMPLOYEE WITH 4TH HIGHEST SALARY 
SELECT * FROM EMPLOYEE WHERE SAL> 
(SELECT TOP1 SAL FROM(SELECT DISTINCT TOP4 
SAL FROM EMPLOYEE ORDERBY SAL DESC)S 
ORDERBY SAL) 
NOTE: 
Temporary Table Name S Contains the Result of Nested Sub query I.E. Four Highest Salaries from 
Employee Table.
CORRELLATED SUBQUERIES: 
1. Main Query Will Execute First And The Value Of The Main Query Will Be Used By Correlated Sub 
query Where Main Query Is Executed. 
2.The Copy Of The Table Will Be Stored In Memory And Correlated Sub query Will Checks The Values 
In Memory And Will Give Ranks For The Values In Memory And According To The Ranks The Resul ts 
Will Be Displayed. 
3. Sub Queries Will Work Fast And Correlated Sub Queries Will Work Slow Because Correlated Sub 
Query Will Have Repetition. 
TO GET DETAILS OF EMPLOYEE WITH FIRST HIGHEST SALARY 
SELECT * FROM EMPLOYEE E WHERE O= 
(SELECT COUNT(*) FROM EMPLOYEE M 
WHERE M.SAL>E.SAL) 
TO DISPLAY DUPLICATE RECORDS FROM EMPLOYEE TABLE 
SELECT ENO,ENAME,SAL COUNT(*) FROM EMPLOYEE 
GROUPBY ENO,ENAME,SAL 
HAVING COUNT(*)>1

Subqueries

  • 1.
    SUBQUERIES: 1. Nestedsub queries 2. Correlated sub queries Nested sub queries: Query within another sub queries is called nested queries It contains three select statements they are 1. Main query 2. Sub query 3. Nested sub query TO GET THIRD HIGHEST SALARY FROM EMPLOYEE TABLE SELECT MAX(SAL) FROM EMPLOYEE WHERE SAL<MAIN QUERY (SELECT MAX(SAL)FROM EMPLOYEE WHERE SAL<SUB QUERY (SELECT MAX(SAL)FROM EMPLOYEE))NESTED SUB QUERY TO GET DETAILS OF EMPLOYEE WITH SECOND HIGHEST SALARY SELECT * FROM EMPLOYEE WHERE SAL> (SELECT MAX(SAL)FROM EMPLOYEE WHERE SAL> (SELECT MAX(SAL)FROM EMPLOYEE)) [EXECUTION STARTS FROM 3RD LINE] TO GET THE DETAILS OF THE EMPLOYEE WITH 4TH HIGHEST SALARY SELECT * FROM EMPLOYEE WHERE SAL> (SELECT TOP1 SAL FROM(SELECT DISTINCT TOP4 SAL FROM EMPLOYEE ORDERBY SAL DESC)S ORDERBY SAL) NOTE: Temporary Table Name S Contains the Result of Nested Sub query I.E. Four Highest Salaries from Employee Table.
  • 2.
    CORRELLATED SUBQUERIES: 1.Main Query Will Execute First And The Value Of The Main Query Will Be Used By Correlated Sub query Where Main Query Is Executed. 2.The Copy Of The Table Will Be Stored In Memory And Correlated Sub query Will Checks The Values In Memory And Will Give Ranks For The Values In Memory And According To The Ranks The Resul ts Will Be Displayed. 3. Sub Queries Will Work Fast And Correlated Sub Queries Will Work Slow Because Correlated Sub Query Will Have Repetition. TO GET DETAILS OF EMPLOYEE WITH FIRST HIGHEST SALARY SELECT * FROM EMPLOYEE E WHERE O= (SELECT COUNT(*) FROM EMPLOYEE M WHERE M.SAL>E.SAL) TO DISPLAY DUPLICATE RECORDS FROM EMPLOYEE TABLE SELECT ENO,ENAME,SAL COUNT(*) FROM EMPLOYEE GROUPBY ENO,ENAME,SAL HAVING COUNT(*)>1