1

我在一个复杂的查询中遇到了这个问题。这是简化版:

SELECT sin(3.14) as s from my_table where s < 1

错误:#1054 - 'where 子句' 中的未知列 's'

4

3 回答 3

3

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
于 2013-07-31T15:45:46.550 回答
1
SELECT sin(3.14) as s from my_table where sin(3.14) < 1;
于 2013-07-31T15:35:40.413 回答
1

在该表上创建一个 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))
);
于 2013-07-31T15:42:53.470 回答