关于mysql中“group by”语句的简短问题:
我当前的数据库结构如下所示:
CREATE TABLE TableName
(
ID int primary key,
name varchar(255),
number varchar(255)
);
INSERT INTO TableName
(ID, name, number)
VALUES
(1, "Test 1", "100000"),
(2, "Apple", "200000"),
(3, "Test 1 beta", "100000"),
(4, "BLA", "300000"),
(5, "ABU", "400000"),
(6, "CBA", "700000"),
(7, "ABC", "600000"),
(8, "Orange - Test", "400000"),
(9, "ABC", "");
我当前的声明如下:
SELECT name, number, count(*) as Anzahl
FROM TableName
group by name,number
使用此语句,结果如下所示:
NAME NUMBER ANZAHL
ABC 1
Test 1 100000 2
Apple 200000 1
BLA 300000 1
ABU 400000 2
ABC 600000 1
CBA 700000 1
但是值“ABC”不会合并。
结果应该是这样的:
NAME NUMBER ANZAHL
Test 1 100000 2
Apple 200000 1
BLA 300000 1
ABU 400000 2
ABC 600000 2
CBA 700000 1
有什么想法吗?
SQLFiddle: http://sqlfiddle.com/#!2/dcbee/1
该解决方案必须对于 +1 000 000 行之类的内容具有高性能
最佳答案
首先,恕我直言,将数字存储到字符列中是一个糟糕的设计。使用整数比使用字符更快。话虽这么说,我假设名称列中的所有值都是数字。这是一个避免多个 ABC 值的查询
SELECT name,
SUM(convert(number, SIGNED INTEGER)) as number,
count(*) as Anzahl
FROM TableName
GROUP BY name ;
关于mysql - 分组依据 - 具有不同的结果,包括。数数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19524597/