Freigeben über


Fehlerklasse UNRESOLVED_COLUMN

SQLSTATE: 42703

Ein Spalten- oder Funktionsparameter mit Name <objectName> kann nicht aufgelöst werden.

Diese Fehlerklasse weist die folgenden abgeleiteten Fehlerklassen auf.

WITHOUT_SUGGESTION

Parameter

  • objectName: Der Name der Spalte oder des Parameters, die/der nicht aufgelöst werden kann.

WITH_SUGGESTION

Meinten Sie Folgendes? [<proposal>]

Parameter

  • objectName: Der Name der Spalte oder des Parameters, die/der nicht aufgelöst werden kann.
  • proposal: Eine durch Kommas getrennte Liste potenzieller Kandidaten.

Erklärung

Azure Databricks löst diesen Fehler immer dann aus, wenn ein Bezeichner in einem Kontext nicht identifiziert werden kann, in dem eine Spalte, ein Spaltenalias oder ein Funktionsparameter erwartet wird.

Es gibt mehrere Ursachen für diesen Fehler:

  • Ein Rechtschreibfehler im Spaltennamen oder Parameternamen.
  • Sie wollten eigentlich ein Zeichenfolgenliteral und keinen Bezeichner angeben.
  • Die Spalte wurde mit ALTER TABLE umbenannt oder gelöscht
  • Die Spalte wurde nicht in die Auswahlliste einer Unterabfrage aufgenommen.
  • Die Spalte wurde mit dem Tabellenalias oder Spaltenalias umbenannt.
  • Die Spaltenreferenz ist korreliert, und Sie haben keine LATERAL angegeben.
  • Die Spaltenreferenz bezieht sich auf ein Objekt, das nicht sichtbar ist, weil es früher in derselben Auswahlliste oder innerhalb einer skalaren Unterabfrage erscheint.

Lösung

Die Minderung des Fehlers hängt von der Ursache ab:

  • Ist die Schreibweise des Namens und der Qualifikationsmerkmale falsch?

    Vergleichen Sie mit den Spalten, die oben im objectList angeboten werden, und korrigieren Sie die Schreibweise.

  • Haben Sie stattdessen eine String-Literal angegeben?

    Setzen Sie das Literal in einfache Anführungszeichen und nicht in Backticks (Akzent grave).

  • Wurde die Spalte aus einer Unterabfrage weggelassen?

    Fügen Sie die Spalte zur Auswahlliste der Unterabfrage hinzu.

  • Verweisen Sie auf eine Spalte in einer früheren Beziehung in derselben from-Klausel?

    Fügen Sie das LATERAL Schlüsselwort vor der Unterabfrage mit der nicht aufgelösten Spalte hinzu. Die Korrelierte Abfrageunterstützung ist begrenzt. Möglicherweise müssen Sie die Abfrage neu schreiben (entkorrelieren).

  • Ist unklar, warum die Spalte oder das Feld nicht aufgelöst werden kann?

    Eine detaillierte Beschreibung der Namensauflösung finden Sie unter Auflösung von Spalten, Feldern, Parametern und Variablen.

Beispiele

> 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