首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >需要使用“拥有”而不是“在哪里”

问需要使用“拥有”而不是“在哪里”
EN

Stack Overflow用户
提问于 2016-07-18 21:30:29
回答 2查看 269关注 0票数 0

为了简洁起见,我简化了查询,如下所示

代码语言:javascript
复制
SELECT
  1 AS mae
FROM
  (SELECT
     t.id
   FROM transaction t) a
  LEFT OUTER JOIN
  (SELECT
     track_id
   FROM attendee) AS b ON a.id = b.track_id
HAVING mae > 0;

在这里没有聚合。不过,我还是要用拥有。如果我使用where,mysql将无法识别mae列。

为何会这样呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-07-18 22:13:16

通常,在SELECT子句中定义的别名在相同的SELECT中不可重用--在WHERE中也不可再使用,在ON子句中也是如此。这在所有SQL方言中都是正确的。另一方面,在ORDER BY中允许使用别名。

MySQL在HAVING子句中识别列别名。这非常方便,以至于MySQL扩展了HAVING子句以用于非聚合查询。所以,您的查询使用了这个扩展。

这个扩展的一个很好的特性是它允许引用而不使用子查询--这是正常的方式。因为MySQL将(几乎)所有派生表物化,这将节省处理过程中的开销。

票数 1
EN

Stack Overflow用户

发布于 2016-07-18 21:34:15

你只是想定期加入吗?

代码语言:javascript
复制
SELECT *
FROM  transaction t
JOIN attendee AS b 
ON a.id = b.track_id
票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38446319

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档