php - Phalcon:不能在 where/having 子句中使用别名列

标签 php mysql where-clause phalcon calculated-columns

我必须选择一些与给定坐标有一定距离的位置点。 提出查询

$locations = Locations::query()->columns(['id','distance' => '(1+2)'])
                ->order('distance')
                ->having('distance < 10')
                ->execute();

产生错误:

SELECT id, (1+2) AS distance FROM [Multiple\Base\Models\Locations] GROUP BY [distance < 10] ORDER BY distance (116)...

为什么我可以在 order 子句中使用 'distance' 别名,但不能在 having/where 中使用?

如何获取?

下面的查询有效,但我需要按距离对结果集进行排序并在 View 中使用距离...

$locations = Locations::query()->columns(['id'])
                    ->having('(1+2) < 10')
                    ->execute();

最佳答案

这是 MySQL 而非 Phalcon 强加的限制。尝试执行:

SELECT id, (1+2) AS distance FROM locations WHERE distance < 10;

从 mysql 命令行,您将收到相同的错误。

关于php - Phalcon:不能在 where/having 子句中使用别名列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32408122/

相关文章:

php - 在 Laravel 5.1 中更新表结构而不回滚

php - 更新网页的特定区域而不重新加载整个页面

需要 Mysql 帮助

javascript - 如何使用 Django 获取正在 HTML 中呈现的对象的索引

XQuery 过滤器,如 Where 子句

php - 如何从sql php中的同一个表中选择多个avg

php - 我的填充不起作用

php - 为什么我的数据库更新在没有刷新的情况下无法加载

php - 当字符串中存在唯一数据时,如何使用php插入数据

mysql - 如果字段将在两个单独的 WHERE 子句中使用,是否应该在此处使用复合索引?