在WHERE子句中引用列別名
以下SQL查詢語句在WHERE子句中使用了列別名:
SELECT logcount, logUserID, maxlogtm , DATEDIFF(day, maxlogtm, GETDATE()) AS daysdiff FROM statslogsummary WHERE daysdiff > 120
為了解決這個問題,我們可以強制SQL先執行SELECT語句,然後再執行WHERE子句。這可以透過使用括號或公用表表達式(CTE)來實現。
方法一:使用括號
在下面的修改後的查詢中,SELECT語句用括號括起來,強制其在WHERE子句之前執行:
SELECT * FROM ( SELECT logcount, logUserID, maxlogtm, DATEDIFF(day, maxlogtm, GETDATE()) AS daysdiff FROM statslogsummary ) as innerTable WHERE daysdiff > 120
方法二:使用CTE
或者,您可以像下面的範例中一樣使用CTE:
WITH CTE AS ( SELECT logcount, logUserID, maxlogtm, DATEDIFF(day, maxlogtm, GETDATE()) AS daysdiff FROM statslogsummary ) SELECT * FROM CTE WHERE daysdiff > 120
以上是我可以在 WHERE 子句中使用列別名嗎?的詳細內容。更多資訊請關注PHP中文網其他相關文章!