我是mysql的初学者,我有这个问题:
SELECT ((ACOS(SIN('45' * PI() / 180) * SIN(latitude * PI() / 180) + COS('45' * PI() / 180) * COS(latitude * PI() / 180) * COS(('-75' - longitude) * PI() / 180)) * 180 / PI()) * 60 * 1.1515) AS `distance` FROM `account` HAVING `distance`<='100' ORDER BY `distance` ASC
这很好用,但它只能给我一些距离作为结果...我想拥有我桌子的所有字段......我试过了
从帐户中选择*在哪里(...)作为距离..但它不起作用...任何人都可以帮我修改此查询...谢谢
答案 0 :(得分:0)
使用MySQL,如果您想在*
语句中使用SELECT
,并结合其他字段/表达式(换句话说,只需要SELECT *
以外的任何内容),您需要使用表别名。所以你的代码需要看起来像这样:
SELECT a.*,
((ACOS(SIN('45' * PI() / 180) * SIN(latitude * PI() / 180) + COS('45' * PI() / 180) * COS(latitude * PI() / 180) * COS(('-75' - longitude) * PI() / 180)) * 180 / PI()) * 60 * 1.1515) AS `distance`
FROM `account` AS a
HAVING `distance`<='100'
ORDER BY `distance` ASC;