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

Kann ich Spaltenaliase in WHERE-Klauseln verwenden?

Mary-Kate Olsen
Freigeben: 2025-01-21 17:42:10
Original
208 Leute haben es durchsucht

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:

SELECT logcount, logUserID, maxlogtm
   , DATEDIFF(day, maxlogtm, GETDATE()) AS daysdiff
FROM statslogsummary
WHERE daysdiff > 120
Nach dem Login kopieren

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:

SELECT
   *
FROM
(
   SELECT
      logcount, logUserID, maxlogtm,
      DATEDIFF(day, maxlogtm, GETDATE()) AS daysdiff
   FROM statslogsummary   
) as innerTable
WHERE daysdiff > 120
Nach dem Login kopieren

CTE:

WITH CTE AS (
   SELECT
      logcount, logUserID, maxlogtm,
      DATEDIFF(day, maxlogtm, GETDATE()) AS daysdiff
   FROM statslogsummary
)
SELECT
   *
FROM CTE
WHERE daysdiff > 120
Nach dem Login kopieren

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!

Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage