SELECT
department_id, ROUND(MIN(salary), 2) AS 'Min Salary'
FROM
employees
GROUP BY department_id
HAVING 'Min Salary' > 800;这似乎不起作用,但取而代之的是:
SELECT
department_id, ROUND(MIN(salary), 2) AS min_salary
FROM
employees
GROUP BY department_id
HAVING min_salary > 800效果很好。有人能给我一个答案吗?为什么我不能用‘’或“‘,但是我必须使用列名?
发布于 2020-01-25 19:09:24
HAVING 'Min Salary' > 800
标识符周围的单引号将其转换为文字字符串。因此,这个条件实际上是检查字符串'Min Salary'是否大于800。当转换为一个数字时,'Min Salary'变成0,这比800小。这不是你所期望的。
另外,请注意,MySQL对待双引号就像对待单引号一样-而在其他一些数据库(如Oracle或Postgres )中,它们用于引号标识符。
如果您想要一个包含空格的标识符,那么您需要使用backticks,这就是MySQL引用标识符的方式。所以:
SELECT department_id, ROUND(MIN(salary), 2) AS `Min Salary`
FROM employees
GROUP BY department_id
HAVING `Min Salary` > 800;https://stackoverflow.com/questions/59912482
复制相似问题