mysql - 如何在 WHERE 子句中使用别名列 day?

标签 mysql sql

我有一个关于这个查询的问题:

  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 子句中重复调用 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;

关于mysql - 如何在 WHERE 子句中使用别名列 day?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48606243/

相关文章:

sql - 在用数据填充表之前创建索引,还是在数据到位之后创建索引更好?

MySQL 加入查询结果

MYSQL UTF8_bin 不区分大小写的唯一索引

PHP - 猜测变量中存储的图像的 MIME 类型

mysql - 自动清除 mariadb 二进制日志

sql - 删除没有主键的重复项

java - Spring/Hibernate 同一个实体不同的数据库结构

mysql - 创建新列,并按其顺序递增

mysql - 在 MySql 中以原子方式插入可能的最低唯一正整数

php - Mysql:只显示最合适的LIKE请求