Heim >Datenbank >MySQL-Tutorial >Kann ich Spaltenaliase in WHERE-Klauseln verwenden?

Kann ich Spaltenaliase in WHERE-Klauseln verwenden?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2025-01-21 17:42:10206Durchsuche

Can I Use Column Aliases in WHERE Clauses?

Spaltenalias in WHERE-Klausel verweisen

Das Verweisen auf Spaltenaliase in der WHERE-Klausel kann manchmal zu Fehlern bei der Verarbeitung von Datenbankabfragen führen. Dies liegt daran, dass Aliase normalerweise angewendet werden, nachdem die WHERE-Klausel ausgewertet wurde. Betrachten Sie die folgende Abfrage:

<code class="language-sql">SELECT logcount, logUserID, maxlogtm
   , DATEDIFF(day, maxlogtm, GETDATE()) AS daysdiff
FROM statslogsummary
WHERE daysdiff > 120</code>

In dieser Abfrage tritt der Fehler auf, weil „daysdiff“ ein Spaltenalias ist, der in der SELECT-Anweisung erstellt wurde. Um in einer WHERE-Klausel auf einen Alias ​​zu verweisen, können Sie SQL zwingen, die SELECT-Anweisung vor der WHERE-Klausel auszuwerten. Dies kann durch die Verwendung von Klammern oder allgemeinen Tabellenausdrücken (CTE) erreicht werden.

Klammer/Unterabfrage:

<code class="language-sql">SELECT
   *
FROM
(
   SELECT
      logcount, logUserID, maxlogtm,
      DATEDIFF(day, maxlogtm, GETDATE()) AS daysdiff
   FROM statslogsummary   
) as innerTable
WHERE daysdiff > 120</code>

CTE:

<code class="language-sql">WITH CTE AS (
   SELECT
      logcount, logUserID, maxlogtm,
      DATEDIFF(day, maxlogtm, GETDATE()) AS daysdiff
   FROM statslogsummary
)
SELECT
   *
FROM CTE
WHERE daysdiff > 120</code>

Durch die Verwendung von Klammern oder einem CTE wird die SELECT-Anweisung vor der WHERE-Klausel ausgewertet, sodass Sie ohne Fehler auf Spaltenaliase in der WHERE-Klausel verweisen können.

Das obige ist der detaillierte Inhalt vonKann ich Spaltenaliase in WHERE-Klauseln verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn