我在复杂的查询中遇到此问题。这是简化版本:
SELECT sin(3.14) as s from my_table where s < 1
错误: #1054 - 'where子句'
中的未知列''
答案 0 :(得分:2)
HAVING
会拯救你
SELECT *,(((acos(sin((".$lat."*pi()/180)) *sin((latitud*pi()/180))
+cos((".$lat."*pi()/180))
* cos((latitud*pi()/180))
* cos(((".$lng."- longitud)*pi()/180))))*180/pi())
*60*1.1515*1.609344) as distance
FROM pois_data,pois_cat
WHERE pois_data.idtipo=pois_cat.id AND latitud IS NOT NULL
HAVING distance <1
答案 1 :(得分:1)
SELECT sin(3.14) as s from my_table where sin(3.14) < 1;
答案 2 :(得分:0)
在该表上创建一个VIEW,该表达式为列。
CREATE VIEW vw
SELECT sin(3.14) AS s FROM my_table;
SELECT * FROM vw WHERE s < 1;
或者在表格中创建一个虚拟列。
CREATE TABLE my_table (
...,
s VIRTUAL FLOAT AS (sin(3.14))
);