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子句中有多个列,则查询可能会受益于所有列的单个组合索引. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |