1

在 SQL 中,假设我需要在 having 子句中引用一个别名字段,但别名有引号,我该怎么做?

select (select...) as '005'
group by ...
having '005'>0
4

2 回答 2

4

我认为您缺少 FROM 子句,您应该使用反引号而不是单引号:

SELECT (SELECT ...) AS `005`
FROM table1
GROUP BY ...
HAVING `005` > 0

如果您发布完整的查询会有所帮助,因为我在这里猜测您想要做什么。

于 2010-06-05T00:03:16.260 回答
2

SQL-92 标准定义对列别名使用双引号,而不是单引号。在大多数数据库中,仅当您使用双引号时才允许使用不寻常的字符。

也就是说,并非所有数据库都支持在GROUP BYorHAVING子句中引用列别名(在同一查询中)。对于可移植查询,我不推荐在GROUP BYorHAVING子句中引用列别名的做法。此外,该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
于 2010-06-05T00:13:14.880 回答