mysql - 将多行连接到一个单元格中的 SQL 命令?

标签 mysql sql database oracle relational-database

我有一个用户组分配表,例如:

ID----UserName------Group
01    johnsmith     admin
02    sarahwilles   admin
03    johnsmith     testuser

我想将其显示为:

UserName-------Groups
johnsmith      admin, testuser
sarahwilles    admin

这可以通过 SQL 实现吗?

最佳答案

这不是标准 SQL 的一部分,因为它非常开放,很难以提供可预测答案的方式解决这个问题。无限行数基本上是 SQL 的正常和预期的部分,但无限长度的文本字符串不是。 group_concat() 存在于 mysql 中,但对我而言,它通常几乎无法满足我的要求。它会做它唯一能做的事情,那就是在超过系统限制 group_concat_max_len 时截断结果。因此,它仍然需要额外的代码来计算“真实”结果的长度,并查看它是否比 group_concat_max_len 长。当然,您可能有一些其他约束来保证它不会成为问题,但更有可能的是,它只是不可能,而不是不可能因超过 group_concat_max_len 而出现问题.此外,这意味着您必须在某个时刻验证代码中 group_concat_max_len 的值,因为它是可配置的并且可能会在以后更改。

在几乎所有我希望可以使用 group_concat() 的情况下,我最终发现我最好编写一些可以处理行中所有值的东西,而不是将它们连接成一个字符串。不过,如果您只是在 mysql> 提示符下闲逛,探索您的数据,它会非常方便。

关于mysql - 将多行连接到一个单元格中的 SQL 命令?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8011057/

相关文章:

python - 用于更新 pandas 数据框的 SQL 值

mysql - 尝试将 Access 插入查询转换为 MySQL 查询

c# - 如何在 Entity Framework 5 Code First 中处理主键

sql - 动态情况下

MySQL 查找性能 PK unsigned INT 与索引 varchar(15) 列

c# - 我在 executenonquery mysql.dll 期间遇到 fatal error ,空文件路径不合法

java - 我的 SQL 语法错误

sql - 数据库抽象——支持多种语法

C++:使用sqlite创建动态数据库以传输语音流

php - 标题不会重定向我,不明白为什么