当前位置:  开发笔记 > 后端 > 正文

SQL查询还是子查询?

如何解决《SQL查询还是子查询?》经验,为你挑选了1个好方法。

我在MySQL中有一个学生信息表,看起来像这样(简化):

|   age : int   |   city : text   |   name : text   |
-----------------------------------------------------
|               |                 |                 |

我希望选择一个城市内的所有学生姓名和年龄,以及每个学生,他的年龄组中有多少其他学生(即,有多少学生分享他的年龄值).

我设法用子查询做到了这一点; 就像是:

select 
   name, 
   age as a, 
   (select 
       count(age) 
    from 
       tbl_students 
    where 
       age == a) 
from 
   tbl_students 
where 
   city = 'ny'

但它似乎有点慢,我不是SQL-wiz,所以我想我会问是否有更聪明的方法来做到这一点.该表按年龄和城市编制索引.



1> Frans Bouma..:
select 
    t1.name, 
    t1.age as a, 
    count(t2.age) NumberSameAge
from 
   tbl_students t1 inner join tbl_students t2
    on t1.age=t2.age
where 
   city = 'ny'
group by t1.name, t1.age

未经测试,但有类似的东西.在一个加入时,我是一个小组.这有时会更快,因为您正在运行的查询正在为返回的每一行执行嵌套子查询,而我上面发布的查询(或者至少是带有join和groupby的结构)只对相关学生执行查询一旦.

推荐阅读
家具销售_903
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有