我有一个用户组分配表,例如:
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/