1

使用函数后是否可以在 SQL 中查询字段名称?

所以例如

select datediff(hh, startdate, enddate) as HoursBetween
from tbl
where HoursBetween > 0
4

3 回答 3

4

不幸的是,您不能使用ALIAS与子句在同一级别上创建的那个,WHERE因为WHERE子句在子句之前首先执行SELECT。你有两个选择,

一、直接在WHERE子句中使用表达式。

select datediff(hh, startdate, enddate) as HoursBetween 
from tbl 
where datediff(hh, startdate, enddate) > 0

二,将语句包装在子查询中。

SELECT *
FROM
(
    select datediff(hh, startdate, enddate) as HoursBetween 
    from tbl 
) ss
WHERE ss.HoursBetween > 0

这是SQL Order of Operation

  • FROM 子句
  • WHERE 子句
  • GROUP BY 子句
  • HAVING 子句
  • 选择子句
  • ORDER BY 子句
于 2013-05-21T13:38:25.677 回答
2
SELECT * 
FROM (select datediff(hh, startdate, enddate) as HoursBetween
from tbl) AS I
WHERE HoursBetween > 0
于 2013-05-21T13:38:49.710 回答
1

在这种情况下可以使用On MySQL HAVING子句:

SELECT datediff(hh, startdate, enddate) AS HoursBetween FROM tbl
HAVING HoursBetween > 0
于 2013-05-21T13:46:26.413 回答