我有这个mysql表。
name | column
bob11 | value
bob22 | value
red12 | value
bam22 | value
我想做的是添加数字11和22,因为鲍勃的名字是一样的。我想以此方式将其与其他名称一起输出。
name | column
bob33 | value
red12 | value
bam22 | value
我已经知道如何通过此代码获取具有相同值的列。
"SELECT name, COUNT(*) as count FROM table GROUP BY name HAVING COUNT(*) > 1"
但是我不知道该怎么做。任何想法将不胜感激。谢谢
答案 0 :(得分:0)
如果数字前的部分始终为3个字符长,则可以使用LEFT()
和SUBSTR()
提取前缀和数字,然后使用CONCAT()
和SUM()
结合起来。
SELECT CONCAT(LEFT(name, 3), SUM(SUBSTR(name, 4))) AS name, `column`
FROM yourTable
GROUP BY LEFT(name, 3);
如果没有,则需要编写一个返回数字后缀位置的函数,并使用该函数代替对3
的硬编码。
SELECT CONCAT(LEFT(name, number_pos(name)-1), SUM(SUBSTR(name, number_pos(name)))) AS name, `column`
FROM yourTable
GROUP BY LEFT(name, number_pos(name)-1)
有关查找数字位置的方法,请参见Finding number position in string。