sql >> Database teknologi >  >> RDS >> Oracle

SQL genkender ikke kolonnealias i where-sætning

Et alias kan bruges i en forespørgselsvalgsliste for at give en kolonne et andet navn. Du kan bruge aliaset i GROUP BY, ORDER BY eller HAVING-sætninger til at henvise til kolonnen.

Standard SQL tillader ikke referencer til kolonnealiasser i en WHERE-sætning. Denne begrænsning er pålagt, fordi når WHERE-sætningen evalueres, er kolonneværdien muligvis ikke bestemt endnu.

Så følgende forespørgsel er ulovlig:

SQL> VÆLG ansat AS medarbejder, afd. AS afdeling, løn AS løn 2 FRA stilling 3 WHERE medarbejder =7369; HVOR medarbejder =7369 *FEJL på linje 3:ORA-00904:"EMPLOYEE":ugyldig identifikatorSQL>

Kolonnealiaset er tilladt i:

  • GRUPPER EFTER
  • BEstil efter
  • HAR

Du kan henvise til kolonnealiaset i WHERE-sætningen i følgende tilfælde:

  1. Underforespørgsel
  2. Common Table Expression (CTE)

For eksempel

SQL> VÆLG * FRA 2 ( 3 SELECT empno AS medarbejder, deptno AS afdeling, sal AS løn 4 FRA emp 5 ) 6 WHERE ansat =7369; MEDARBEJDERAFDELING LØN----------- ---------- ---------- 7369 20 800SQL> WITH DATA AS( 2 SELECT empno AS medarbejder, deptno AS afdeling , sal AS løn 3 FRA anm. 4 ) 5 VÆLG * FRA DATA 6 HVOR medarbejder =7369; MEDARBEJDERAFDELING LØN----------- ---------- ---------- 7369 20 800SQL>

  1. Hent pl/sql-array-returværdier i java

  2. Masseindlæsningsdatakonverteringsfejl (type uoverensstemmelse eller ugyldigt tegn for den angivne tegntabel) for række 1, kolonne 4 (år)

  3. Sådan fortsætter du med STORE BLOB'er (>100MB) i Oracle ved hjælp af Hibernate

  4. Kan en INNER JOIN tilbyde bedre ydeevne end EKSISTERER