,假设我需要引用having子句中的别名字段,但是别名有引号,我该怎么做?
select (select...) as '005'
group by ...
having '005'>0
答案 0 :(得分:4)
我认为你缺少一个FROM子句,你应该使用反引号而不是单引号:
SELECT (SELECT ...) AS `005`
FROM table1
GROUP BY ...
HAVING `005` > 0
如果您发布完整查询会有所帮助,因为我在这里猜测您想要做什么。
答案 1 :(得分:2)
SQL-92标准使用双引号定义列别名,而不是单引号。在大多数数据库中,只有在使用双引号时才允许使用异常字符。
尽管如此,并非所有数据库都支持引用GROUP BY
或HAVING
子句中的列别名(在同一查询中)。对于便携式查询,我不建议在GROUP BY
或HAVING
子句中引用列别名。此外,HAVING
子句用于聚合 - 您提供的简化示例应该触发错误,因为在005
列别名上没有执行聚合函数(IE:COUNT,AVG,MIN / MAX等)
以下适用于MySQL 4.1:
SELECT COUNT(*) AS "005"
FROM TABLE t
GROUP BY ...
HAVING `005` > 0