mysql - 折叠给定组的数据

标签 mysql sql

在我的数据库中,我有一个数据列表

名称值

a/b/c     1
a/b/c/d   1
a/b/c/d/e 1
b/b/c     1
b/b/c/d   2
c/c/d     3
c/c/d/e   4
d/d       5

如果我设置最大长度3我想要得到

a/b/c  3
b/b/c  3
c/c/d  7
d/d    5

我该怎么做?

CREATE TABLE dataTable (
ID                          BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name                        VARCHAR(255),
Value                       INT
) ENGINE=InnoDB;


INSERT INTO dataTable (Name, Value) VALUES ("a/b/c", 1), ("a/b/c/d", 1), ("a/b/c/d/e", 1), ("b/b/c", 1), ("b/b/c/d", 1), ("c/c/d", 1), ("c/c/d/e", 1),  ("d/d", 1);

最佳答案

SELECT LEFT(Name, 5) AS Name, SUM(Value) as TotalValue
    FROM dataTable
    GROUP BY LEFT(Name, 5)

显然,我在示例中对 5 进行了硬编码,但您可以使用 (2*MaxLen-1) 等变量。

关于mysql - 折叠给定组的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6753119/

相关文章:

sql - 这是什么类型的连接语法?

mysql - 如何使用下划线(_)和句点(.)拆分值?

java - 新的 EntityManager 有时会从 MySQL 获取陈旧数据

mysql - 按给定参数过滤查询,如果未提供则为空

sql - 动态多语言数据结构的数据库设计模式

mysql - 检索加入日期距今天不到 15 天的行

sql - 为什么这个查询在没有索引的情况下更快?

mysql - 如何检查某个值是否存在或是否存在两次?

php - 如何从 PHP 中的连接表中获取列?

php - 是否可以使用 PHP 在没有依赖项的情况下备份 SQL?如果不是,哪个最好?