我有一张像这样的表:
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查询执行此操作。
感谢。
答案 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
在这里演示:
答案 1 :(得分:0)
您可以使用以下查询:
select name,substring(sid,1,9) as sub,count(*) as count from myTable group by sub;