SQLite -. Sub Queries

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