繁体   English   中英

如何在mysql中计算具有substring()值的记录

[英]how to count records with value maed by a substring() in mysql

我有一张像这样的桌子:

id | name | sid
---|------|-----
1  | Mary | 123456789
2  | Sean | 34567896874341
3  | Paul | 12345678934782
4  | Guy  | 765432689
5  | Joe  | 98765465321675

我需要显示具有相同子字符串值的行数:子字符串(sid,1,9),并且每行都有。

我的预期输出是:

id | name | sub         | count
---|------|-------------|------
1  | Mary |123456789    | 2
2  | Sean |345678968    | 1
3  | Paul |123456789    | 2
4  | Guy  |765432689    | 1
5  | Joe  |987654653    | 1

我如何用一个mysql查询做到这一点。

谢谢。

您的预期结果意味着您只想获取原始数据集以及一个新列,其中包含整个表中每个sid的子字符串计数。 在下面的查询中,我在子查询中计算sid计数,然后将其重新连接到原始表中。

SELECT t1.id,
       t1.name,
       t2.sub,
       t2.sid_count
FROM yourTable t1
INNER JOIN
(
    SELECT SUBSTRING(sid, 1, 9) AS sub, COUNT(*) AS sid_count
    FROM yourTable
    GROUP BY SUBSTRING(sid, 1, 9)
) t2
    ON SUBSTRING(t1.sid, 1, 9) = t2.sub

演示在这里:

SQLFiddle

您可以使用以下查询:

select name,substring(sid,1,9) as sub,count(*) as count from myTable group by sub;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM