我在MySQL中有一个表,大致如下所示:
value | count
-------------
Fred | 7
FRED | 1
Roger | 3
roger | 1也就是说,它是使用MySQL之外的字符串操作创建的,因此值区分大小写和尾随空格。
我希望它看起来像这样:
value | count
-------------
Fred | 8
Roger | 4也就是说,以value为主键,由MySQL管理。保留哪个( "Fred“或"FRED")并不重要。
我知道如何在代码中做到这一点。我还知道如何生成问题值列表(使用自连接)。但是我想想出一个SQL update/delete来迁移表,但是我想不出任何东西。
如果我知道没有一对记录具有相同计数的变量(如("Fred",4)和("FRED",4)),那么我想我可以使用自连接来复制计数,然后通过更新来删除零。但我没有这样的保证。
我是否遗漏了一些简单的东西,或者这是您在数据库之外编写一个简短函数的情况之一?
谢谢!
发布于 2010-06-26 07:15:22
奇怪的是,MySQL似乎为您做了这件事。我刚刚在MySQL 5.1.47中进行了测试:
create table c (value varchar(10), count int);
insert into c values ('Fred',7), ('FRED',1), ('Roger',3), ('roger',1);
select * from c;
+-------+-------+
| value | count |
+-------+-------+
| Fred | 7 |
| FRED | 1 |
| Roger | 3 |
| roger | 1 |
+-------+-------+
select value, sum(count) from c group by value;
+-------+------------+
| value | sum(count) |
+-------+------------+
| Fred | 8 |
| Roger | 4 |
+-------+------------+我很惊讶看到MySQL这样转换字符串,我不确定我能解释为什么它这样做。我希望得到四个不同的行,并且必须使用一些字符串函数将值映射到规范形式。
https://stackoverflow.com/questions/3121973
复制相似问题