Subquery एक Inner Query और Nested Query की एक Query में एक Query होती है.
SQL Subquery आमतौर पर SQL Statemen के WHERE Clause में Add कर दी जाती है.
SELECT Statement का उपयोग करने के लिए Value को कैसे Search करना है जब आपको पता चलता है लेकिन Database में Exact Value नहीं है तब Maximum Time के लिये एक Subquery का उपयोग किया जाता है.
Subqueries Multiple Tables से Data को वापस करने का एक Optional तरीका है.
Subqueries का उपयोग बहुत से SQL Statement के साथ Comparision Operators जैसे =, <,>,> =, <= आदि के साथ किया जा सकता है.
SELECT column-names
FROM table-name1
WHERE value IN (SELECT column-name
FROM table-name2
WHERE condition)
इस Example मे आप Subqueries का उपयोग करने की आवश्यकताओं को सीखेंगे. यहाँ पर हमारे पास Common Field जिनमे 'StudentID' के साथ निम्नलिखित दो Tables है जिनमे Student और Marks है.
Student ID | Name |
---|---|
A001 | Anna |
A002 | Muffy |
A003 | Bettie |
A004 | Betty |
A005 | Emma |
A006 | Sarah |
A007 | Chaitali |
A008 | Khilan |
Student ID | Total Marks |
---|---|
A001 | 97 |
A002 | 78 |
A003 | 96 |
A004 | 87 |
A005 | 85 |
A006 | 83 |
A007 | 70 |
A008 | 87 |
अब हम सभी Students की पहचान करने के लिए एक Query लिखना चाहते हैं, जो Students Id 'A002' के Students के मुकाबले बेहतर Marks प्राप्त करते हैं, लेकिन हम A002 के Marks नहीं जानते हैं.
समस्या का समाधान करने के लिए हमें दो Query की आवश्यकता होती है. एक Query 'A002' के Marks Total_marks Field में Store होते है और एक दूसरी query उन Students को पहचानती है जो पहली Query के Result से बेहतर Marks प्राप्त करते हैं.
SELECT *
FROM `marks`
WHERE studentid = 'A002';
Student ID | Total Marks |
---|---|
A002 | 78 |
SELECT a.studentid, a.name, b.total_marks
FROM student a, marks b
WHERE a.studentid = b.studentid
AND b.total_marks >78;
Student ID | Name | Total Marks |
---|---|---|
A001 | Anna | 97 |
A003 | Bettie | 96 |
A004 | Betty | 87 |
A005 | Emma | 85 |
A006 | Sarah | 83 |
A008 | Khilan | 87 |
SELECT a.studentid, a.name, b.total_marks
FROM student a, marks b
WHERE a.studentid = b.studentid AND b.total_marks >
(SELECT total_marks
FROM marks
WHERE studentid = 'A002');
Student ID | Name | Total Marks |
---|---|---|
A001 | Anna | 97 |
A003 | Bettie | 96 |
A004 | Betty | 87 |
A005 | Emma | 85 |
A006 | Sarah | 83 |
A008 | Khilan | 87 |