簡體   English   中英

如何在WHERE子句中使用別名列日?

[英]How to use aliased column day in WHERE clause?

我對此查詢有疑問:

  SELECT DAYOFYEAR(t.ts_start) AS 'day', YEAR(t.ts_start) AS year, t.o AS value FROM Cryptoforecast_ETH_BTC_1h AS t 

當我運行它會顯示結果。 現在我想過濾一天添加這樣的WHERE語句

SELECT DAYOFYEAR(t.ts_start) AS 'day', YEAR(t.ts_start) AS year, t.o AS value FROM Cryptoforecast_ETH_BTC_1h AS t WHERE 'day'=157

但這沒有結果和警告:

Truncated incorrect DOUBLE value: 'day'

問題是什么?

您不能在WHERE子句中使用別WHERE 因此,您實際上並沒有將列值與int進行比較。

WHERE 'day'=157

相反,您可以使用

WHERE DAYOFYEAR(t.ts_start) = 157

注意:列別名無需使用單引號。

只需在WHERE子句中重復調用DAYOFYEAR

SELECT
    DAYOFYEAR(t.ts_start) AS day,
    YEAR(t.ts_start) AS year,
    o AS value
FROM Cryptoforecast_ETH_BTC_1h
WHERE DAYOFYEAR(t.ts_start) = 157;

或者,如果要使用day別名,則可以使用重載的HAVING子句來使用:

SELECT
    DAYOFYEAR(t.ts_start) AS day,
    YEAR(t.ts_start) AS year,
    o AS value
FROM Cryptoforecast_ETH_BTC_1h
HAVING day = 157;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM