如何用mysql中的substring()来计算值为maed的记录

时间:2017-01-18 08:38:04

标签: mysql

我有一张像这样的表:

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

我需要显示具有相同子字符串值的行数:substring(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查询执行此操作。

感谢。

2 个答案:

答案 0 :(得分:2)

您的预期结果意味着您只想获取原始数据集以及包含整个表中每个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

答案 1 :(得分:0)

您可以使用以下查询:

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