[英]SQL - invalid column name
我有以下查询:
SELECT o.outcode AS lead_postcode, v.outcode AS venue_postcode, 6 * o.lat AS distance
FROM venue_postcodes v, uk_postcodes o
WHERE o.outcode = 'CF3'
GROUP BY v.outcode
HAVING SUM(distance)>100
ORDER BY distance
当我添加零件GROUP BY v.outcode HAVING SUM(distance)>100
时,此操作停止工作
它说服务器无法处理请求。 --->无效的列名'distance' 。
有什么想法吗?
distance
是列别名,您不能在HAVING
子句中引用列别名。 但是您可以在ORDER BY
使用别名。
尝试更改为:
HAVING SUM(6 * o.lat)>100
ORDER BY distance
仅在查询中仅定义为“ 6 * o.lat”的“别名”距离尚未在查询中使用,只能在之后使用。
替代解决方案是
SELECT i.*
FROM (
SELECT o.outcode AS lead_postcode, v.outcode AS venue_postcode, 6 * o.lat AS distance
FROM venue_postcodes v, uk_postcodes o
WHERE o.outcode = 'CF3'
) i
GROUP BY i.outcode
HAVING SUM(i.distance)>100 ORDER BY i.distance
使用ORDER BY 6 * o.lat
。 您不能将AS子句用于ORDER BY
我相信您需要使用SUM(6 * o.lat),因为不是每个数据库服务器都可以在Haves子句中使用别名列(这与查询计划,解析等有关)。 取决于您使用的数据库。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.