sql别名字段

时间:2010-06-04 23:59:21

标签: sql mysql column-alias

SQL中的

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

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

2 个答案:

答案 0 :(得分:4)

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

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

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

答案 1 :(得分:2)

SQL-92标准使用双引号定义列别名,而不是单引号。在大多数数据库中,只有在使用双引号时才允许使用异常字符。

尽管如此,并非所有数据库都支持引用GROUP BYHAVING子句中的列别名(在同一查询中)。对于便携式查询,我不建议在GROUP BYHAVING子句中引用列别名。此外,HAVING子句用于聚合 - 您提供的简化示例应该触发错误,因为在005列别名上没有执行聚合函数(IE:COUNT,AVG,MIN / MAX等)

以下适用于MySQL 4.1:

  SELECT COUNT(*) AS "005"
    FROM TABLE t
GROUP BY ...
  HAVING `005` > 0