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

标签 mysql

我在新列中将公式命名为“radial”,我不知道为什么会遇到此错误““where 子句”中的未知列“radial””。

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()

最佳答案

这是正确的。不能在 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 特有的,当查询不进行聚合时,它会按预期工作。否则,您将需要使用子查询。

关于在where条件中找不到Mysql别名列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21603111/

相关文章:

mysql - select count(*) from <table> 在 C 中使用 MySQL 函数给出错误结果

php - 如何获取特定列中值为 null 的记录?

MySQL:多列排序所需的索引

php - MySQL 选择然后回显结果

mysql - SQL 删除命令

php - table_exists() 方法可能无法正常工作

mysql - 我得到这样的东西 ,"Failed to load resource: the server responded with a status of 404 (Not Found)"

java - 在 Java 中使用从一个类到另一个类的列表中的查询结果

MySQL 只选择不为空的列

mysql - Ruby on Rails 应用程序未连接