在where where条件中找不到mysql别名列

时间:2014-02-06 12:33:12

标签: mysql

我在一个名为“radial”的新列中使用了一个公式,我不知道为什么我在'where子句'中面对这个错误“未知列''''。”

select `id`,(sqrt(pow(`x`,2)+pow(`y`,2))) AS `radial` FROM `wdata` where `fieldtype` = 3 and `occupied` = 0 AND `x`>0 AND `y`<0 AND `radial`>$minafstand AND `radial`<$maxafstand ORDER BY rand()

1 个答案:

答案 0 :(得分:4)

这是正确的。您不能在where子句中使用列别名。 MySQL有一个扩展名,您可以将其放在having中:

select `id`,(sqrt(pow(`x`,2)+pow(`y`,2))) AS `radial`
FROM `wdata`
where `fieldtype` = 3 and `occupied` = 0 AND `x`>0 AND `y`<0
having `radial`>$minafstand AND `radial` < $maxafstand
ORDER BY rand();

这非常特定于MySQL,并且在查询未进行聚合时按预期工作。否则,您需要使用子查询。