首页 新闻 会员 周边 捐助

请问该SQL是怎么执行的

0
悬赏园豆:30 [已关闭问题] 关闭于 2012-06-01 12:14

 

搜索按type分类的click(点击率)最高的前两条记录。

查询结果为(该例子返回四条数据)

SELECT * FROM #tb1 a WHERE a.id IN
( SELECT TOP 2 ID FROM #tb1 WHERE type=a.type ORDER BY Click DESC)

请问这条SQL是怎么进行匹配的。执行机制是什么

问题补充:

我想知道怎么匹配的,可否说明白点

彬彬@科比的主页 彬彬@科比 | 初学一级 | 园豆:43
提问于:2012-05-30 22:17
< >
分享
所有回答(4)
0

这个类似于一个内联查询。

就是对a中的每一个type,查询id在另外一个集合中的数据记录。

无之无 | 园豆:5095 (大侠五级) | 2012-05-30 22:25

我想知道怎么匹配的,可否说明白点,就按照上面的例子

支持(0) 反对(0) 彬彬@科比 | 园豆:43 (初学一级) | 2012-05-30 22:48
0

可能这么写会比较直观:

select * from tb1 a where a.id in (select top 2 id from tb1 group by type ) order by click desc

nickel | 园豆:338 (菜鸟二级) | 2012-05-30 22:27

select top 2 id from tb1 group by type

 

这个都明显语法错误了

支持(0) 反对(0) 彬彬@科比 | 园豆:43 (初学一级) | 2012-05-30 22:36
0

SELECT TOP 2 ID FROM #tb1 WHERE type=a.type ORDER BY Click DESC

查询出跟#tb1表有关系的并且按click字段倒序排序的前两条数据。

SELECT * FROM #tb1 a WHERE a.id IN这是查询出a.id在上面子查询返回的两条数据中的记录。

悟行 | 园豆:12559 (专家六级) | 2012-05-30 22:27

我想知道怎么匹配的,可否说明白点,就按照上面的例子

支持(0) 反对(0) 彬彬@科比 | 园豆:43 (初学一级) | 2012-05-30 22:38
0

建议你用SQL执行计划看看详细过程,加深理解

winzheng | 园豆:8797 (大侠五级) | 2012-05-30 22:58

能查看怎样匹配嘛?没有用过,在哪里查看。我想知道这个SQL是怎么匹配的。谢谢了

支持(0) 反对(0) 彬彬@科比 | 园豆:43 (初学一级) | 2012-05-30 23:03

@彬彬@科比: sqlserver的菜单中有菜单项:实际执行计划

支持(0) 反对(0) winzheng | 园豆:8797 (大侠五级) | 2012-05-31 23:27
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册