MYSQL在WHERE子句中使用别名

莫尔托尼卜

我读到您不能在WHERE子句中使用ALIAS,但是我仍然没有一个好的替代解决方案来实现我在下面尝试做的事情。我该如何处理DISTANCE计算,以便可以在WHERE子句中使用它?

SELECT n.nid AS nid, location.name AS location_name, (6371.0 * ACOS(SIN((location.latitude * RADIANS(1))) * SIN((28.755925 * RADIANS(1))) + COS((location.latitude * RADIANS(1))) * COS((28.755925 * RADIANS(1))) * COS((location.longitude * RADIANS(1)) - (-81.346395 * RADIANS(1))))) AS distance
            FROM 
            node n
            LEFT JOIN location_instance ON n.vid = location_instance.vid
            LEFT JOIN location ON location_instance.lid = location.lid
            WHERE (( (n.status = '1') AND (n.type IN  ('locations')) AND (distance <= 100) ))
            ORDER BY distance
            LIMIT 10
戈登·利诺夫(Gordon Linoff)

MySQL扩展了HAVING子句的使用,该子句可用于此目的。如果查询不是聚合查询,则HAVING仍会进行过滤-但它允许使用别名。

因此,您可以编写:

SELECT n.nid AS nid, l.name AS l, (6371.0 * ACOS(SIN((l.latitude * RADIANS(1))) * SIN((28.755925 * RADIANS(1))) + COS((l.latitude * RADIANS(1))) * COS((28.755925 * RADIANS(1))) * COS((l.longitude * RADIANS(1)) - (-81.346395 * RADIANS(1))))) AS distance
FROM node n LEFT JOIn
     location_instance li
     ON n.vid = li.vid LEFT JOIN
     location l
     ON li.lid = l.lid
WHERE n.status = 1 AND n.type IN ('locations') 
HAVING distance <= 100
ORDER BY distance
LIMIT 10;

笔记:

  • 如果status似乎是一个数字,则应将其与数字而不是字符串进行比较。
  • 表别名使查询更易于编写和阅读。
  • 虽然statustype可以在进去HAVING条款,我怀疑他们是更好的WHERE(我怀疑HAVING可能会影响优化选项)。
  • 您可以使用子查询,但是它将所有数据存储在表中。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在MySQL的WHERE子句中使用if / else结果别名

来自分类Dev

在where子句中使用别名-SQL

来自分类Dev

如何在MySQL的where子句中使用铅滞后功能使用别名

来自分类Dev

如何在MySQL的WHERE子句中使用子查询表别名

来自分类Dev

在where子句中使用的select中的聚合函数别名

来自分类Dev

从SELECT WHERE子句中使用别名从COALESCE

来自分类Dev

在where子句中使用别名“ case when”

来自分类Dev

在PostgreSQL的子查询的WHERE子句中使用别名

来自分类Dev

不能在where子句中使用的排名别名

来自分类Dev

sql在where子句中使用查询别名

来自分类Dev

如何在 SQL Server 的 where 子句中使用别名

来自分类Dev

如何在 WHERE 子句中使用别名?

来自分类Dev

在Where子句中使用Mysql变量

来自分类Dev

在 WHERE 子句中使用 MySQL 变量

来自分类Dev

if else 在 mysql where 子句中使用

来自分类Dev

MySQL在where子句中选择别名

来自分类Dev

在JOIN的ON子句中使用别名

来自分类Dev

在JOIN的ON子句中使用别名

来自分类Dev

如何在WHERE子句中使用MySql MAX()

来自分类Dev

是否可以在MySQL的where子句中使用当前的Dayname?

来自分类Dev

可以在WHERE子句中使用MySQL临时变量吗?

来自分类Dev

在MySQL预准备语句的WHERE子句中使用通配符

来自分类Dev

在MySQL的where子句中使用substring_index

来自分类Dev

在mysql的where子句中使用未知长度的数组

来自分类Dev

如何在where子句中使用mysql extract year

来自分类Dev

MySQL-在WHERE子句中使用SHA2

来自分类Dev

在WHERE子句中使用一串值-MySQL

来自分类Dev

在MySQL预准备语句的WHERE子句中使用通配符

来自分类Dev

如何在MySQL的WHERE子句中使用OR&AND

Related 相关文章

热门标签

归档