En Subquery eller Indre spørring eller Nøstet spørring er en spørring i en annen SQLite spørring og integrert i WHERE-leddet
er en delspørring brukes til å returnere data som vil bli brukt i hovedspørringen som en betingelse for ytterligere å begrense dataene som skal hentes
subqueries kan brukes med SELECT, INSERT, UPDATE og DELETE-setninger sammen med operatørene som =, <, >, >. =, < =, IN, BETWEEN etc.
Det er noen regler som subqueries må følge.
subqueries må vedlegges i parentes
< p> En subquery kan bare ha én kolonne i SELECT-leddet, med mindre flere kolonner er i hovedspørringen for subquery å sammenligne sine utvalgte kolonner.
En ORDER BY kan ikke brukes i en delspørring, selv om hovedspørringen kan bruke en ORDER BY. GROUP BY kan brukes til å utføre samme funksjon som ORDER BY i en subquery.
subqueries som returnerer mer enn én rad kan bare brukes med flere verdi operatører, som for eksempel . I operatør
MELLOM Operatøren kan ikke brukes med en delspørring; imidlertid MELLOM kan brukes innenfor subquery
delspørringer med SELECT erklæringen.
subqueries er mest brukt med SELECT-setningen. Den grunnleggende syntaks er som følger:
VELG Kolonnen [, kolonne] Fra table1 [, table2] HVOR kolonne OPERATØR (VELG kolonne [, kolonne] Fra table1 [, table2] [Hvor])
Eksempel:
Tenk COMPANY bordet er å ha følgende poster:
ID Navn Alder ADRESSE LØNN ---------- ---------- ---------- ---------- ---------- 1 Paul 32 California 20000,02 Allen 25 Texas 15000,03 Teddy 23 Norge 20000,04 Mark 25 Rich-Mond 65000,05 David 27 Texas 85000,06 Kim 22 Sør-Hall 45000,07 James 24 Houston 10000,0
Nå, la oss sjekke følgende sub-spørring med SELECT-setning:
sqlite > SELECT * FROM selskap hvor ID IN (SELECT ID FRA selskap hvor LØNN > 45000);
Dette vil gi følgende resultat:
ID Navn Alder ADRESSE LØNN ---------- --- ------- ---------- ---------- ---------- 4 Mark 25 Rich-Mond 65000,05 David 27 Texas 85000.0
delspørringer med INSERT-setningen:
subqueries også kan brukes med INSERT-setninger. INSERT-setningen bruker dataene som returneres fra subquery å sette inn i en annen tabell. De utvalgte data i subquery kan endres med noen av de karakter, dato eller tallfunksjonene
Den grunnleggende syntaks er som følger:.
INSERT INTO table_name [(COLUMN1 [, COLUMN2])] SELECT [ ,,,0],* | COLUMN1 [, COLUMN2] Fra table1 [, table2] [HVOR VERDI OPERATØR]
Eksempel:
Tenk et bord COMPANY_BKP med lignende struktur som COMPANY bord og kan bli laget med samme CREATE TABLE hjelp COMPANY_BKP som tabellnavn. Nå å kopiere komplett COMPANY bord i COMPANY_BKP, er syntaksen:
sqlite > INSERT INTO COMPANY_BKP SELECT * FROM selskap hvor ID IN (SELECT ID fra bedrift);
delspørringer med oppdateringen Uttalelse:
subquery kan brukes i forbindelse med oppdateringen uttalelse. Enten én eller flere kolonner i en tabell kan oppdateres når du bruker en delspørring med UPDATE statement
Den grunnleggende syntaks er som følger:.
UPDATE tableSET kolonne = new_value [HVOR OPERATØR [value] (VELG COLUMN_NAME Fra TABLE_NAME) [HVOR)]
Eksempel:
Forutsatt, har vi COMPANY_BKP bord tilgjengelig som er backup av COMPANY tabellen
Følgende eksempel oppdateringer LØNN med 0,50 ganger i COMPANY bordet for alle. kundene, hvis alder er større enn eller lik 27:
sqlite > UPDATE COMPANY SET LØNN = LØNN * 0,50 der alder IN (SELECT alder fra COMPANY_BKP der alder > = 27);
Dette vil påvirke to rader og endelig COMPANY bord ville ha følgende poster:
ID Navn Alder ADRESSE LØNN ---------- ---------- ---------- ---------- ---------- 1 Paulus 32 California 10000,02 Allen 25 Texas 15000,03 Teddy 23 Norge 20000,04 Mark 25 Rich-Mond 65000,05 David 27 Texas 42500,06 Kim 22 Sør-Hall 45000,07 James 24 Houston 10000.0
delspørringer med DELETE Uttalelse:
subquery kan brukes i forbindelse med DELETE utsagn som med eventuelle andre uttalelser som er nevnt ovenfor
Den grunnleggende syntaks er som følger:.
DELETE FROM TABLE_NAME [HVOR OPERATØR [value] (VELG COLUMN_NAME Fra TABLE_NAME) [HVOR )]
Eksempel:
Forutsatt, vi har COMPANY_BKP bord tilgjengelig som er backup av COMPANY tabellen
Etter eksempel sletter poster fra COMPANY bord for alle kunder hvis alder er større enn eller. lik 27:
sqlite > DELETE FROM selskap hvor AGE IN (SELECT alder fra COMPANY_BKP der alder> 27);
Dette vil påvirke to rader og endelig COMPANY bord ville ha følgende poster:
ID Navn Alder ADRESSE LØNN ------- --- ---------- ---------- ---------- ---------- 2 Allen 25 Texas 15000,03 Teddy 23 Norge 20000,04 Mark 25 Rich-Mond 65000,05 David 27 Texas 42500,06 Kim 22 Sør-Hall 45000,07 James 24 Houston 10000,0