SELECT
latitude, longitude,
SQRT(POWER(69.1 * (latitude - 29.0998573), 2) +
POWER(69.1 * (76.3466209 - longitude) * COS(latitude / 57.3), 2)) AS distance
FROM
driverAvailable
您可以在WHERE
子句中重复distance
的公式:
SELECT
latitude, longitude,
SQRT(POWER(69.1 * (latitude - 29.0998573), 2) +
POWER(69.1 * (76.3466209 - longitude) * COS(latitude / 57.3), 2)) AS distance
FROM
driverAvailable
WHERE
SQRT(POWER(69.1 * (latitude - 29.0998573), 2) +
POWER(69.1 * (76.3466209 - longitude) * COS(latitude / 57.3), 2)) < 25
或者您可以使用 CTE(公用表表达式(,然后使用定义的别名列:
WITH DistanceData AS
(
SELECT
latitude, longitude,
SQRT(POWER(69.1 * (latitude - 29.0998573), 2) +
POWER(69.1 * (76.3466209 - longitude) * COS(latitude / 57.3), 2)) AS distance
FROM
driverAvailable
)
SELECT
latitude, longitude, distance
FROM
DistanceData
WHERE
distance < 25
您只是不能在WHERE
子句的SELECT
查询中直接使用列别名 - 您必须使用 CTE 之类的东西才能执行此操作