【发布时间】:2018-05-07 10:43:34
【问题描述】:
我正在尝试在where 子句中使用函数执行的结果,但没有成功:
SELECT clinics.*, distance_between_objects(1, id, 7, 3) AS dist FROM clinics WHERE dist<=1;
给我:Column "dist" does not exists。
像这样引用它:
SELECT clinics.*, distance_between_objects(1, id, 7, 3) AS dist FROM clinics WHERE "dist"<=1;
也无济于事。请告知 Postgres 是否有可能在 WHERE 子句中使用函数结果而不调用它两次? 谢谢!
【问题讨论】:
-
WHERE 不能使用在同一级别的 select 中计算的值,因为它是在获取值之前进行评估的。另一方面 ORDER BY 可以,因为它是在选择所有值之后评估的。但是将函数封装到 FROM 子句中的子选择中,它会起作用。
标签: postgresql select where-clause sql-function