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
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
CTE:
WITH CTE AS ( SELECT logcount, logUserID, maxlogtm, DATEDIFF(day, maxlogtm, GETDATE()) AS daysdiff FROM statslogsummary ) SELECT * FROM CTE WHERE daysdiff > 120
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!