加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – 没有组计数

发布时间:2020-12-12 16:31:59 所属栏目:MsSql教程 来源:网络整理
导读:我有一个名为GUYS(ID,NAME,PHONE)的表,我需要添加一个有多少个同名的人,同时显示所有这些表,所以我无法对它们进行分组. 例: ID NAME PHONE1 John 335 2 Harry 4443 James 3674 John 7425 John 654 想要的输出应该是 ID NAME PHONE COUNT1 John 335 32 Harry
我有一个名为GUYS(ID,NAME,PHONE)的表,我需要添加一个有多少个同名的人,同时显示所有这些表,所以我无法对它们进行分组.
例:
ID NAME  PHONE
1  John  335   
2  Harry 444
3  James 367
4  John  742
5  John  654

想要的输出应该是

ID NAME  PHONE COUNT
1  John  335   3
2  Harry 444   1
3  James 367   1
4  John  742   3
5  John  654   3

我该怎么办?我只想得到很多不同的人.

谢谢

解决方法

由于MySQL没有 analytical functions like Oracle,所以你不得不诉诸一个子查询.

不要使用GROUP BY,使用子选择来计算同名的人数:

SELECT
  t.name,t.phone,(SELECT COUNT('x') FROM Guys ct 
   WHERE ct.name = t.name) as namecounter
FROM
  Guys t

你会认为,为每一行运行一个子选择将是缓慢的,但如果你有正确的索引,MySQL将优化这个查询,你会看到它运行正常.

在这个例子中,你应该有一个Guys.name的索引.如果子查询的where子句中有多个列,则查询可能会受益于所有列的单个组合索引.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读