mysql - 如何从数据库中选择来组织像这个报告这样的数据

标签 mysql database

我有一个表,其中每条记录是:ID、groupID 和一个注释字段。 ID不是唯一的,它可以关联多个groupID。每个 ID-groupID 组合可以与多个笔记相关联。 我在这里尝试打印的主要数据是注释字段。

id             | groupID    | notes
------------------------------------------------------------------
JWOFJ903JCKDF8 | groupID-22 | new id, new id-groupID combo
JWOFJ903JCKDF8 | groupID-33 | repeat id (line 1), new id-groupID combo
JWOFJ903JCKDF8 | groupID-33 | repeat id (lines 1&2), repeat id-groupID (line 2)
...
DF8#CKJ90JJ3WO | groupID-22 | new id, new id-groupID combo
DF8#CKJ90JJ3WO | groupID-44 | repeat id (line 4), new id-groupID combo
...

打印数据时,如何选择注释,以便将属于同一 ID-groupID 组合的所有注释组合在一起?并且属于同一 ID 的所有组 ID 都分组在一起?

所以我的报告看起来像这样:

JWOFJ903JCKDF8
   -groupID-22
      - [line 1 of the data] new id, new id-groupID combo
   -groupID-33
      - [line 2 of the data] repeat id (line 1), new id-groupID combo
      - [line 3 of the data] repeat id (lines 1&2), repeat id-groupID (line 2)
DF8#CKJ90JJ3WO
   -groupID-22
      - [line 4 of the data] new id, new id-groupID combo
   -groupID-44
      - [line 5 of the data] repeat id (line 4), new id-groupID combo

我应该指出这个表非常大 - 超过 200,000 条记录并且还在增长。

最佳答案

其实很简单:

1/选择需要的记录(按id和groupId排序)

SELECT id,groupID,notes
  FROM <your table name>
 WHERE ...
 ORDER BY id, groupID
 LIMIT ...

2/使用 WHERE 限制结果以检索简单 id 和/或 LIMIT 的结果(我怀疑您想在单个报告中显示这 200k 条记录)。阅读 SELECT 命令的 Mysql 文档

3/在您的前端,使用一个变量来计算结果并在每次更改 id 或 groupID 时缩进

如果我可以建议,你的数据库模型应该这样改变:

  • column id 应该是唯一的,就像一个自增键
  • 一个新列(我们称之为键)应该存储当前的 id
  • 如果列 groupId 引用现有的表组,则以相同的方式更改此表:
    • 一个唯一的自动增量 id 列,一个名字,
    • 并且在您的记录表中​​,仅存储组表 ID 作为列名建议

关于mysql - 如何从数据库中选择来组织像这个报告这样的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11479441/

相关文章:

MySQL:优化查询以从字符串集中查找匹配的字符串

MySQL:联合查询在 MySQL 5.5 上失败,在 MySQL 5.1 上工作

JavaScript 动态对象键 ejs

java - eclipse的插件或工具,可以以图形pic格式显示表之间的连接性

mysql - 使用 laravel 查询生成器根据相关表排序结果

mysql - 如何按日期选择登录总数?

php - 通过 php 删除数据库中的数据时出错

java - 关系数据库锁定

database - 如何使用 PostgreSQL 限制特定表中的行数?

mysql - 如何在 Oracle 中设置变量然后在查询中重用它?