In SQL a Subquery can be simply defined as a query within another query. In other words we can say that a Subquery is a query that is embedded in WHERE clause of another SQL query. Important rules for Subqueries: Show
Syntax: There is not any general syntax for Subqueries. However, Subqueries are seen to be used most frequently with SELECT statement as shown below: SELECT column_name FROM table_name WHERE column_name expression operator ( SELECT COLUMN_NAME from TABLE_NAME WHERE ... ); Sample Table: DATABASE NAMEROLL_NOLOCATIONPHONE_NUMBERRam101Chennai9988775566Raj102Coimbatore8877665544Sasi103Madurai7766553344Ravi104Salem8989898989Sumathi105Kanchipuram8989856868STUDENT NAMEROLL_NOSECTIONRavi104ASumathi105BRaj102ASample Queries :
Select NAME, LOCATION, PHONE_NUMBER from DATABASE WHERE ROLL_NO IN (SELECT ROLL_NO from STUDENT where SECTION=’A’);
Table1: Student1 NAMEROLL_NOLOCATIONPHONE_NUMBER Ram101chennai9988773344 Raju102coimbatore9090909090 Ravi103salem8989898989Table2: Student2 NAMEROLL_NOLOCATIONPHONE_NUMBER Raj111chennai8787878787 Sai112mumbai6565656565 Sri113coimbatore7878787878
INSERT INTO Student1 SELECT * FROM Student2;
DELETE FROM Student2 WHERE ROLL_NO IN ( SELECT ROLL_NO FROM Student1 WHERE LOCATION = ’chennai’);
1 row delete successfully.
UPDATE Student2 SET NAME=’geeks’ WHERE LOCATION IN ( SELECT LOCATION FROM Student1 WHERE NAME IN (‘Raju’,’Ravi’));
1 row updated successfully.
This article is contributed by RanjaniRavi. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to [email protected]. See your article appearing on the GeeksforGeeks main page and help other Geeks. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above. You can use a subquery in a SELECT, INSERT, DELETE, or UPDATE statement to perform the following tasks:
Syntax :
SQL Subqueries Example :In this section, you will learn the requirements of using subqueries. We have the following two tables 'student' and 'marks' with common field 'StudentID'. student marks Now we want to write a query to identify all students who get better marks than that of the student who's StudentID is 'V002', but we do not know the marks of 'V002'. First query:
Query result: The result of the query is 80. Second query:
Relational Algebra Expression: Relational Algebra Tree: Query result: Above two queries identified students who get the better number than the student who's StudentID is 'V002' (Abhay). You can combine the above two queries by placing one query inside the other. The subquery (also called the 'inner query') is the query inside the parentheses. See the following code and query result : SQL Code:
Query result: Pictorial Presentation of SQL Subquery: Subqueries: General RulesA subquery SELECT statement is almost similar to the SELECT statement and it is used to begin a regular or outer query. Here is the syntax of a subquery: Syntax: (SELECT [DISTINCT] subquery_select_argument FROM {table_name | view_name} {table_name | view_name} ... [WHERE search_conditions] [GROUP BY aggregate_expression [, aggregate_expression] ...] [HAVING search_conditions]) Subqueries: GuidelinesThere are some guidelines to consider when using subqueries :
Type of Subqueries
In the next session, we have thoroughly discussed the above topics. Apart from the above type of subqueries, you can use a subquery inside INSERT, UPDATE and DELETE statement. Here is a brief discussion : Subqueries with INSERT statementINSERT statement can be used with subqueries. Here are the syntax and an example of subqueries using INSERT statement. Syntax: INSERT INTO table_name [ (column1 [, column2 ]) ] SELECT [ *|column1 [, column2 ] FROM table1 [, table2 ] [ WHERE VALUE OPERATOR ]; If we want to insert those orders from 'orders' table which have the advance_amount 2000 or 5000 into 'neworder' table the following SQL can be used: Sample table: orders SQL Code:
Output: To see more details of subqueries using INSERT statement click here. Subqueries with UPDATE statementIn a UPDATE statement, you can set new column value equal to the result returned by a single row subquery. Here are the syntax and an example of subqueries using UPDATE statement. Syntax: UPDATE table SET column_name = new_value [ WHERE OPERATOR [ VALUE ] (SELECT COLUMN_NAME FROM TABLE_NAME) [ WHERE) ] If we want to update that ord_date in 'neworder' table with '15-JAN-10' which have the difference of ord_amount and advance_amount is less than the minimum ord_amount of 'orders' table the following SQL can be used: Sample table: neworder SQL Code:
Output: To see more details of subqueries using UPDATE statement click here. Subqueries with DELETE statementDELETE statement can be used with subqueries. Here are the syntax and an example of subqueries using DELETE statement. Syntax: DELETE FROM TABLE_NAME [ WHERE OPERATOR [ VALUE ] (SELECT COLUMN_NAME FROM TABLE_NAME) [ WHERE) ] If we want to delete those orders from 'neworder' table which advance_amount are less than the maximum advance_amount of 'orders' table, the following SQL can be used: Sample table: neworder SQL Code:
Output: To see more details of subqueries using DELETE statement click here. What Next?
Note : Outputs of the said SQL statement shown here is taken by using Oracle Database 10g Express Edition. Which of the following operators Cannot be used in a sub query?Answer: C. Multi-row operators cannot be used in single-row sub-queries and vice versa.
Which of the following operator when applied to a sub query will return greater than the minimum value in the list?any means greater than at least one value, or greater than the minimum value.
Can subqueries be used with the comparison operators?You can use a subquery before or after any of the comparison operators. The subquery can return only one row. It can return multiple values for the row if the equal or not equal operators are used. SQL compares each value from the subquery row with the corresponding value on the other side of the comparison operator.
|