我有一个表,其中每条记录是: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/