Dela via


UNRESOLVED_COLUMN felklass

SQLSTATE: 42703

Det går inte att matcha en kolumn eller funktionsparameter med namnet <objectName> .

Den här felklassen har följande härledda felklasser.

WITHOUT_SUGGESTION

Parametrar

  • objectName: Namnet på kolumnen eller parametern som inte kan matchas.

WITH_SUGGESTION

Menade du något av följande? [<proposal>]

Parametrar

  • objectName: Namnet på kolumnen eller parametern som inte kan matchas.
  • förslag: En kommaavgränsad lista över potentiella kandidater.

Förklaring

Azure Databricks genererar det här felet när det inte kan identifiera en identifierare i en kontext där den förväntar sig en kolumn, kolumnalias eller funktionsparameter.

Det finns flera orsaker till det här felet:

  • Ett stavfel i kolumnnamnet eller parameternamnet.
  • Du tänkte faktiskt ange en strängliteral och inte en identifierare.
  • Kolumnen har bytt namn eller tagits bort med ALTER TABLE
  • Kolumnen ingick inte i urvalslistan för en underfråga.
  • Kolumnen har bytt namn med hjälp av tabellaliaset eller kolumnaliaset.
  • Kolumnreferensen är korrelerad och du angav inte LATERAL.
  • Kolumnreferensen är till ett objekt som inte visas eftersom det visas tidigare i samma urvalslista eller inom en skalär underfråga.

Åtgärd

Hur du åtgärdar felet beror på orsaken:

  • Är stavningen av namnet och kvalificerarna felaktig?

    Jämför med kolumnerna som erbjuds i objectList och åtgärda stavningen.

  • Menade du att ange en strängliteral i stället?

    Omslut literalen i enkla citattecken och inte back-ticks (accentgrav).

  • Utelämnades kolumnen från en underfråga?

    Lägg till kolumnen i urvalslistan för underfrågan.

  • Refererar du till en kolumn i en tidigare relation i samma från-sats?

    Lägg till nyckelordet LATERAL före underfrågan med den olösta kolumnen. Korrelerat frågestöd är begränsat. Du kan behöva skriva om (korrelera) frågan.

  • Det är oklart varför kolumnen eller fältet inte kan matchas?

    Se Kolumn, fält, parameter och variabelmatchning för en detaljerad beskrivning av namnmatchning.

Exempel

> CREATE OR REPLACE TEMPORARY VIEW colors(cyan, magenta, yellow) AS VALUES(10, 20, 5);

-- The column reference has been misspelled
> SELECT jello FROM colors;
  [UNRESOLVED_COLUMN.WITH_SUGGESTION] A column or function parameter with name `jello` cannot be resolved.
  Did you mean one of the following? [`colors`.`cyan`, `colors`.`yellow`, `colors`.`magenta`]

-- Correct the spelling
> SELECT yellow FROM colors;
 5

-- The qualifier has been misspelled
> SELECT color.yellow FROM colors;
 [UNRESOLVED_COLUMN.WITH_SUGGESTION] A column or function parameter with name `color`.`yellow` cannot be resolved.
 Did you mean one of the following? [`colors`.`cyan`, `colors`.`yellow`, `colors`.`magenta`]

-- Correct the spelling
> SELECT colors.yellow FROM colors;
 5

-- Forgot to quote a literal
> SELECT hello;
 [UNRESOLVED_COLUMN.WITHOUT_SUGGESTION] A column or function parameter with name `hello` cannot be resolved.

-- Use single quotes
> SELECT 'hello';

-- Used the wrong quotes for a literal
> SELECT `hello`;
 [UNRESOLVED_COLUMN.WITHOUT_SUGGESTION] A column or function parameter with name `hello` cannot be resolved.

-- Use single quotes instead
> SELECT 'hello';

-- Column "got lost" in a subquery.
> SELECT cyan, magenta, yellow
    FROM (SELECT cyan, magenta
            FROM colors) AS c;
 [UNRESOLVED_COLUMN.WITH_SUGGESTION] A column or function parameter with name `yellow` cannot be resolved.
 Did you mean one of the following? [`c`.`cyan`, `c`.`magenta`]

-- Add the missing column
> SELECT cyan, magenta, yellow
    FROM (SELECT cyan, magenta, yellow
            FROM colors) AS c;
 10   20    5

-- Columns got renamed in the table alias
> SELECT cyan, magenta, yellow
    FROM (SELECT cyan, magenta, yellow
            FROM colors) AS c(c, m, y);
 [UNRESOLVED_COLUMN.WITH_SUGGESTION] A column or function parameter with name `cyan` cannot be resolved.
 Did you mean one of the following? [`c`.`c`, `c`.`m`, `c`.`y`];

-- Adjust the names
> SELECT c, m, y
    FROM (SELECT cyan, magenta, yellow
            FROM colors) AS c(c, m, y);
 10   20    5

-- A correlated reference
> SELECT * FROM colors, (SELECT cyan + magenta + yellow AS total_use);
 [UNRESOLVED_COLUMN.WITHOUT_SUGGESTION] A column or function parameter with name `cyan` cannot be resolved.

-- Add LATERAL to permit correation
> SELECT * FROM colors, LATERAL(SELECT cyan + magenta + yellow AS total_use);
 10    20     5    35

-- Or de-correlate
> SELECT *, cyan + magenta + yellow AS total_use FROM colors;
 10    20     5    35

-- A misspelled parameter name
> CREATE OR REPLACE FUNCTION plus(a INT, b INT) RETURNS INT RETURN arg1 + arg2;
 [UNRESOLVED_COLUMN.WITH_SUGGESTION] A column or function parameter with name `arg1` cannot be resolved.
 Did you mean one of the following? [`plus`.`a`, `plus`.`b`]

-- Fix the names
> CREATE OR REPLACE FUNCTION plus(a INT, b INT) RETURNS INT RETURN a + b;
> SELECT plus(1, 2);
 3