mysql - 在 MySql 的 where 子句中使用别名

标签 mysql

我有这个表结构:

<表类=“s-表”> <标题> HDN_Client HDN_Type HDN_EndDate <正文> 客户端#1 托管 2022-02-01 客户端#2 托管 2022-03-01 客户端#3 托管 2022-07-30

我想在 HDN_EndDate 时显示数据列表今天日期与 HDN_EndDate 之间的天数不超过 60 天日期。

我的查询如下:

SELECT *, 
DATEDIFF(HDN_EndDate, '2022-01-17') 
    AS HDN_DateDiff 
FROM ___table 
WHERE HDN_Type='Hosting' 
   AND HDN_DateDiff<60 
ORDER BY HDN_DateDiff ASC

但它说 HDN_DateDiff不能在 WHERE 子句中使用。

我怎样才能让它发挥作用?

最佳答案

您不能引用同一 SELECT 中定义的 WHERE 子句中的别名。 MySQL 重载其 HAVING 子句以允许它使用别名。以下版本应该可以工作:

SELECT *, DATEDIFF(HDN_EndDate, '2022-01-17') AS HDN_DateDiff
FROM ___table
WHERE HDN_Type = 'Hosting'
HAVING HDN_DateDiff < 60
ORDER BY HDN_DateDiff;

关于mysql - 在 MySql 的 where 子句中使用别名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70749917/

相关文章:

php - 将 3 个表的结果与 MAX(date) 合并

php - 将 sql 与当前登录用户相加

java - 在mysql中插入西类牙语文本

MySQL:当每个订单有多个账单表(以及多次付款)时,仅显示有余额的订单

php - 如何使我的搜索范围更广?

php - 检查mysql字段是否包含mysql查询中的某个数字

mysql - 无法远程连接mysql

MySQL 查询根据不同条件连接 4 个表

mysql - 多行到一行查询

mysql - 插入到目标表时跳过mysql中的重复值