I SQL kan en underforespørgsel simpelthen defineres som en forespørgsel i en anden forespørgsel. Med andre ord kan vi sige, at en underforespørgsel er en forespørgsel, der er indlejret i WHERE-klausulen i en anden SQL-forespørgsel. Vigtige regler for underforespørgsler:
- Du kan placere underforespørgslen i en række SQL-sætninger: HVOR klausul, HAVING-klausul, FROM-klausul. Underforespørgsler kan bruges med SELECT-, UPDATE-, INSERT-, DELETE-sætninger sammen med udtryksoperator. Det kunne være lighedsoperator eller sammenligningsoperator såsom =,>, =, <= og Like-operator.
- En underforespørgsel er en forespørgsel i en anden forespørgsel. Den ydre forespørgsel kaldes som hovedforespørgsel og indre forespørgsel kaldes som underforespørgsel .
- Underforespørgslen udføres generelt først, når underforespørgslen ikke har nogen samrelation med hovedforespørgsel , når der er en co-relation, tager parseren beslutningen på farten på hvilken forespørgsel der skal udføres på forrang og bruger outputtet fra underforespørgslen i overensstemmelse hermed.
- Underforespørgsel skal angives i parentes.
- Underforespørgsler er på højre side af sammenligningsoperatoren.
- BESTIL EFTER kommando kan ikke bruges i en underforespørgsel. GRUPPEBY kommando kan bruges til at udføre samme funktion som ORDER BY kommando.
- Brug enkeltrække-operatorer med enkeltrække-underforespørgsler. Brug operatorer med flere rækker med underforespørgsler med flere rækker.
Syntaks: Der er ikke nogen generel syntaks for underforespørgsler. Underforespørgsler ses dog at blive brugt oftest med SELECT-sætning som vist nedenfor:
listenode
SELECT column_name FROM table_name WHERE column_name expression operator ( SELECT COLUMN_NAME from TABLE_NAME WHERE ... );>
Eksempel tabel :
DATABASE
| NAVN | ROLL_NO | BELIGGENHED | TELEFONNUMMER |
|---|---|---|---|
| Vædder | 101 | Chennai | 9988775566 |
| Raj | 102 | Coimbatore | 8877665544 |
| Sasi | 103 | Madurai | 7766553344 |
| Behandling | 104 | Salem | 8989898989 |
| Sumathi | 105 | Kanchipuram | 8989856868 |
STUDERENDE
| NAVN | ROLL_NO | AFSNIT |
|---|---|---|
| Behandling | 104 | EN |
| Sumathi | 105 | B |
| Raj | 102 | EN |
Eksempelforespørgsler
:
- For at vise NAME, LOCATION, PHONE_NUMBER af eleverne fra DATABASE-tabellen, hvis sektion er A
Select NAME, LOCATION, PHONE_NUMBER from DATABASE WHERE ROLL_NO IN (SELECT ROLL_NO from STUDENT where SECTION=’A’);>
- Forklaring: Første underforespørgsel udfører SELECT ROLL_NO fra STUDENT, hvor SECTION='A' returnerer ROLL_NO fra STUDENT-tabellen, hvis SECTION er 'A'. Derefter udfører den ydre forespørgsel den og returnerer NAME, LOCATION, PHONE_NUMBER fra DATABASE-tabellen for den studerende, hvis ROLL_NO returneres fra indre underforespørgsel. Produktion:
| NAVN | ROLL_NO | BELIGGENHED | TELEFONNUMMER |
| Behandling | 104 | Salem | 8989898989 |
| Raj | 102 | Coimbatore | 8877665544 |
- Indsæt forespørgselseksempel:
Tabel 1: Elev1
funktioner af arduino
| NAVN | ROLL_NO | BELIGGENHED | TELEFONNUMMER | |
|---|---|---|---|---|
| Vædder | 101 | chennai | 9988773344 | |
| Raju | 102 | coimbatore | 9090909090 | |
| Behandling | 103 | salem | 8989898989 |
Tabel2: Elev2
| NAVN | ROLL_NO | BELIGGENHED | TELEFONNUMMER | |
|---|---|---|---|---|
| Raj | 111 | chennai | 8787878787 | |
| Indtil | 112 | mumbai | 6565656565 | |
| Sri | 113 | coimbatore | 7878787878 |
- Sådan indsætter du Elev2 i Elev1-tabellen:
INSERT INTO Student1 SELECT * FROM Student2;>
- Produktion:
| NAVN | ROLL_NO | BELIGGENHED | TELEFONNUMMER | |
|---|---|---|---|---|
| Vædder | 101 | chennai | 9988773344 | |
| Raju | 102 | coimbatore | 9090909090 | |
| Behandling | 103 | salem | 8989898989 | |
| Raj | 111 | chennai | 8787878787 | |
| Indtil | 112 | mumbai | 6565656565 | |
| Sri | 113 | coimbatore | 7878787878 |
- For at slette elever fra Student2-tabellen, hvis rollno er den samme som i Student1-tabellen og har placering som chennai
DELETE FROM Student2 WHERE ROLL_NO IN ( SELECT ROLL_NO FROM Student1 WHERE LOCATION = ’chennai’);>
- Produktion:
1 row delete successfully.>
- Vis elev2-tabel:
| NAVN | ROLL_NO | BELIGGENHED | TELEFONNUMMER | |
|---|---|---|---|---|
| Indtil | 112 | mumbai | 6565656565 | |
| Sri | 113 | coimbatore | 7878787878 |
- For at opdatere navn på eleverne til nørder i Student2-tabellen, hvis placering er den samme som Raju, Ravi i Student1-tabellen
UPDATE Student2 SET NAME=’geeks’ WHERE LOCATION IN ( SELECT LOCATION FROM Student1 WHERE NAME IN (‘Raju’,’Ravi’));>
- Produktion:
1 row updated successfully.>
- Vis elev2-tabel:
| NAVN | ROLL_NO | BELIGGENHED | TELEFONNUMMER | |
|---|---|---|---|---|
| Indtil | 112 | mumbai | 6565656565 | |
| nørder | 113 | coimbatore | 7878787878 |