首页 新闻 会员 周边 捐助

sql高手进

0
悬赏园豆:5 [已解决问题] 解决于 2013-05-06 22:23

A 表有字段 Id Name

B 表有字段 Id Aid Name

如果执行了 select * from A  a INNER JOIN B b ON a.Id = b.Aid where a.Id > 5

请问高手执行sql的执行顺序是怎样的。先执行where 还是 ??

KeVinDurant的主页 KeVinDurant | 初学一级 | 园豆:5
提问于:2013-05-05 14:54
< >
分享
最佳答案
1

先执行from子句吧。where是后面执行的。

select 语句的执行顺序:

   (1).FROM 子句, 组装来自不同数据源的数据
   (2).WHERE 子句, 基于指定的条件对记录进行筛选
   (3).GROUP BY 子句, 将数据划分为多个分组
   (4).使用聚合函数进行计算
   (5).使用 HAVING 子句筛选分组
   (6).计算所有的表达式
   (7).使用 ORDER BY 对结果集进行排序

收获园豆:5
xd_xiaoxin | 菜鸟二级 |园豆:207 | 2013-05-05 16:28
其他回答(3)
0

关注一下,好像有个性能分析的功能,可以看一下,具体是哪个没有过

@@@一统@@@ | 园豆:1551 (小虾三级) | 2013-05-05 14:56
0

这个肯定是最后执行where的,

1.先把A表和B表关联的数据查出来

2.where再在1的基础上找出符合条件的。

AStronghcm | 园豆:313 (菜鸟二级) | 2013-05-05 17:10
0

楼上大哥也说了,Form语句是整个sql语句最先执行的,虽然select 在第一句,不过他几乎是除了order by 最后执行的。所以肯定是先where查询出你连接查询的结果集,然后再进行where筛选。最后select *

甄宇 | 园豆:2 (初学一级) | 2013-05-06 09:19
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册