in SQL, supposes I need to refer to an aliased field in the having clause but the开发者_StackOverflow alias has quotes, how do I do that?
select (select...) as '005'
group by ...
having '005'>0
I think you are missing a FROM clause, and you should use backticks instead of single quotes:
SELECT (SELECT ...) AS `005`
FROM table1
GROUP BY ...
HAVING `005` > 0
It would help if you posted your full query, as I am guessing a bit here as to what you want to do.
The SQL-92 standard defines using double quotes for a column alias, rather than single quotes. In most databases, unusual characters are only allowed if you use double quotes.
That said, not all databases support referring to a column alias (in the same query) in the GROUP BY
or HAVING
clauses. For portable queries, I don't recommend the practice of referring to a column alias in the GROUP BY
or HAVING
clauses. Additionally, the HAVING
clause is for aggregates - the simplified example you provided should trigger an error because no aggregate function (IE: COUNT, AVG, MIN/MAX, etc) is performed on the 005
column alias.
The following works for me on MySQL 4.1:
SELECT COUNT(*) AS "005"
FROM TABLE t
GROUP BY ...
HAVING `005` > 0
精彩评论