在 SQL 中,假设我需要在 having 子句中引用一个别名字段,但别名有引号,我该怎么做?
select (select...) as '005'
group by ...
having '005'>0
在 SQL 中,假设我需要在 having 子句中引用一个别名字段,但别名有引号,我该怎么做?
select (select...) as '005'
group by ...
having '005'>0
我认为您缺少 FROM 子句,您应该使用反引号而不是单引号:
SELECT (SELECT ...) AS `005`
FROM table1
GROUP BY ...
HAVING `005` > 0
如果您发布完整的查询会有所帮助,因为我在这里猜测您想要做什么。
SQL-92 标准定义对列别名使用双引号,而不是单引号。在大多数数据库中,仅当您使用双引号时才允许使用不寻常的字符。
也就是说,并非所有数据库都支持在GROUP BY
orHAVING
子句中引用列别名(在同一查询中)。对于可移植查询,我不推荐在GROUP BY
orHAVING
子句中引用列别名的做法。此外,该HAVING
子句用于聚合 - 您提供的简化示例应该会触发错误,因为没有对005
列别名执行聚合函数(IE:COUNT、AVG、MIN/MAX 等)。
The following works for me on MySQL 4.1:
SELECT COUNT(*) AS "005"
FROM TABLE t
GROUP BY ...
HAVING `005` > 0