mysql - 如何将列与sql中具有相同名称的列连接起来?
问题描述
如何加入所有组并创建newcolumn
文件名相同的自动生成列?
File Name | Group
----------+---------
Log.csv | 1001
Log.csv | 1000
Log.csv | 1005
blue.txt | 1001
blue.txt | 1005
预期结果:
File Name | Group | NewColumn
----------+---------+---------------
Log.csv | 1001 | 1001,1000,1005
Log.csv | 1000 | 1001,1000,1005
Log.csv | 1005 | 1001,1000,1005
Log.csv | 1001 | 1001,1005
Log.csv | 1005 | 1001,1005
解决方案
如果您使用的是 MySQL 8+ 或最新版本的 MariaDB,那么您可以GROUP_CONCAT
在此处用作分析函数:
SELECT file_name, GROUP_CONCAT(`Group`) OVER (PARTITION BY file_name) AS NewColumn
FROM yourTable
ORDER BY file_name, `Group`;
在早期版本的 MySQL/MariaDB 上,我们可能不得不加入子查询作为替代方案:
SELECT t1.file_name, t2.NewColumn
FROM yourTable t1
INNER JOIN
(
SELECT file_name, GROUP_CONCAT(`Group`) AS NewColumn
FROM yourTable
GROUP BY file_name
) t2
ON t2.file_name = t1.file_name
ORDER BY
t1.file_name,
t1.`Group`;
推荐阅读
- c# - 在我的 TableAdapter 中使用 If 语句时发生错误
- ruby-on-rails - 如何在使用 rspec 的方法中分配数据虚拟对象
- mysql - 如何在使用 select 的查询中仅获取具有重复值的列中的最后一个结果?
- android - 为什么 Android 主题不适用于单个按钮
- django - 如何使用 django-import export 添加用于导入数据的文件?
- android - 如何在按钮单击时在自定义视图中绘制一个圆圈
- c - c 中指向 r 值的指针赋值
- angular - 构建时间从 3 分钟到大约 70 分钟 - 使用 Angular7 升级
- javascript - Expo/React Native Fetch API 不返回文本/纯文本数据
- c++ - 找到一种方法将匹配的键和值从映射推回向量