SQL-spørsmål med ALL, TOP, DISTINCT, DISTINCTROW Predicate

  • Jul 26, 2021
click fraud protection

Predikatet er inkludert mellom setningen og fornavnet på feltet som skal hentes, de mulige predikatene er:

  • ALLE: Returnerer alle feltene i tabellen
  • TOPP: Returnerer et visst antall poster fra tabellen
  • TYDELIG: Hopp over poster hvis valgte felt stemmer helt overens
  • DISTINCTROW: Hopp over dupliserte poster basert på hele posten og ikke bare de valgte feltene.

ALLE (* kan brukes i stedet):

Annonser

Hvis ingen av predikatene er inkludert, antas ALL. Database Engine velger alle poster som oppfyller vilkårene for SQL-setningen. Det er ikke praktisk å misbruke dette predikatet siden vi tvinger databasemotoren til å analysere struktur av tabellen for å finne ut feltene den inneholder, er det mye raskere å indikere listen over felt ønsket.

Annonser

VELG ALLE FRA Ansatte;

Å VELGE * DESDE Ansatte;

Annonser

TOPP

Returnerer et visst antall poster som faller mellom begynnelsen eller slutten av et område spesifisert av en ORDER BY-ledd. Anta at vi ønsker å hente navnene på de 25 første studentene i studieåret 1994:

Annonser

- VELG TOPP 25 Fornavn, Etternavn DESDE Studenter

- REKKEFØLGE ETTER Merk DESC;

Annonser

Hvis klausulen ikke er inkludert REKKEFØLGE ETTER, vil spørringen returnere et vilkårlig sett med 25 poster fra Students-tabellen TOPP det velger ikke mellom like verdier. I eksemplet ovenfor vil spørringen returnere 26 poster hvis 25. og 26. trinn er like. Du kan bruke det reserverte ordet PERSENT for å returnere en viss prosentandel av poster som faller ved begynnelsen eller slutten av et område spesifisert av paragrafen REKKEFØLGE ETTER. Anta at i stedet for de 25 første studentene vil vi ha 10 prosent av kurset:

- VELG TOPP 10 PERSENT Navn etternavn DESDE Studenter REKKEFØLGE ETTER Merk DESC;

Verdien som følger TOPP må være et usignert heltal.TOPP det påvirker ikke mulig oppdatering av spørringen.

TYDELIG

Hopp over postene som inneholder dupliserte data i de valgte feltene. Slik at verdiene for hvert felt oppført i uttalelsen Å VELGE inkludert i spørringen må være unik.

For eksempel kan flere ansatte oppført i tabellen Ansatte ha samme etternavn. Hvis to poster inneholder Lopez i Etternavn-feltet, følgende utsagn SQL returnerer en enkelt plate:

- VELG DISTINCT Etternavn DESDE Ansatte;

Med andre ord predikatet TYDELIG returnerer de postene hvis felt er angitt i paragrafen Å VELGE har et annet innhold. Resultatet av et spørsmål som bruker TYDELIG den kan ikke oppgraderes og gjenspeiler ikke påfølgende endringer gjort av andre brukere.

DISTINCTROW

Returnerer de forskjellige postene fra en tabell; I motsetning til forrige predikat som bare så på innholdet i de valgte feltene, det gjør det i innholdet i den komplette posten uavhengig av feltene som er angitt i klausul Å VELGE.

- VELG DISTINCTROW Etternavn DESDE Ansatte;

Hvis tabellen med ansatte inneholder to poster: Antonio López og Marta López, eksemplet på predikatet TYDELIG returnerer en enkelt post med verdien Lopez i feltet Etternavn siden den ikke ser etter duplikater i det feltet. Dette siste eksemplet returnerer to poster med verdien Lopez i etternavnet når det søkes etter ikke-duplikater i hele posten.

instagram viewer