mysql - SQL分组更多表
问题描述
我想帮助解决以下问题。
postp 在第一行,为什么不 ¤Postproc1。分组描述、签名、comp 和 postp。我创建了查询,但其中一个分组没有按照我想要的方式显示。
SELECT
GROUP_CONCAT(cl.description SEPARATOR '¤') AS description,
GROUP_CONCAT(t.name SEPARATOR '¤') AS sign,
GROUP_CONCAT(c.name SEPARATOR '¤') AS comp,
GROUP_CONCAT(p.name SEPARATOR '¤') AS postp,
v.version,
v.date
FROM changelog cl
INNER JOIN versions v ON cl.version = v.id
INNER JOIN cl_type_conn clt ON clt.changelog = cl.id
LEFT JOIN cl_comp_conn cc ON cc.changelog = cl.id
LEFT JOIN cl_postproc_conn cp ON cp.changelog = cl.id
INNER JOIN types t ON t.id = clt.type
LEFT JOIN companies c ON c.id = cc.company
LEFT JOIN postprocessors p ON p.id = cp.postprocessor
GROUP BY cl.version
结果:
+------------+-----------+-------------------+---------+-------+----------+
|description | sign| comp| postp|version|date |
+------------+-----------+-------------------+---------+-------+----------+
|Desc 1¤Desc2|Type3¤Type1|Company 2¤Company 1|Postproc1| ver 1|1631484000|
| Desc 3| Type4| NULL| NULL| ver 2|1631570400|
+------------+-----------+-------------------+---------+-------+----------+
表:
变更日志
+--+-----------+-------+
|id|description|version|
+--+-----------+-------+
| 1| desc 1| 10|
| 2| desc 2| 10|
| 3| desc 3| 20|
+--+-----------+-------+
版本
+--+-----------+----------+
|id|version |date |
+--+-----------+----------+
| 1| ver 1|1631484000|
| 2| ver 2|1631570400|
+--+-----------+----------+
cl_type_conn
+--+---------+----+
|id|changelog|type|
+--+---------+----+
| 1| 1| 1|
| 2| 2| 3|
| 3| 3| 4|
+--+---------+----+
cl_comp_conn
+--+---------+-------+
|id|changelog|company|
+--+---------+-------+
| 1| 1| 435|
| 2| 2| 23|
+--+---------+-------+
cl_postproc_conn
+--+---------+-------------+
|id|changelog|postprocessor|
+--+---------+-------------+
| 1| 2| 1|
+--+---------+-------------+
公司
+---+---------+
|id |name |
+---+---------+
|435|Company 1|
| 23|Company 2|
+---+---------+
后处理器
+---+---------+
|id |name |
+---+---------+
| 1|PostProc1|
+---+---------+
类型
+---+---------+
|id |name |
+---+---------+
| 1| Type 1|
| 2| Type 2|
| 3| Type 3|
| 4| Type 4|
+---+---------+
解决方案
解决方案:
GROUP_CONCAT(p.name SEPARATOR '¤') AS postp,
改变
GROUP_CONCAT(CONCAT(IFNULL(p.name,'')) SEPARATOR '¤') AS postp,
推荐阅读
- c# - 如何在Classic ASP.NET中实现UserControl的RenderPartial并将序列化结果发送到浏览器
- r - 循环遍历 xml 列表
- c# - microsoft Graph API 中使用“无需用户访问”方法时如何获取登录用户的用户个人资料详细信息
- kubernetes - 从 Rsyslog 发送到 Kafka 代理的消息在 Kubernetes 中被剪辑
- node.js - sqlite3 中的 BLOB 字段未更新
- swift - iOS 15 SwiftUI 键盘工具栏随机行为
- github - 从另一个仓库获取更新而不在更改后进行任何 PR 的最佳做法是什么?
- c++ - GetDiskFreeSpaceExA 麻烦
- python - 获取 dpkg:错误:在 PATH 中未找到 2 个预期程序或无法从我构建的 .deb 执行
- javascript - “未知”类型的参数不能分配给“字符串”类型的参数。TS2345