MySQL SELECT 语句按 id 对结果进行分组?

发布于 2024-08-30 12:45:41 字数 555 浏览 5 评论 0原文

我正在尝试创建一个 MySQL SELECT 语句,该语句将从表中选择一堆行,并按行的 id 对结果进行分组(多行将具有相同的 id)。

这是我正在尝试做的事情的一个例子。假设我有下表:

id     |     name  
1      |     Art  
1      |     Arnold  
1      |     Anatoly  
2      |     Beatrice  
2      |     Bertha  
2      |     Betty  
3      |     Constantine  
3      |     Cramer  

我想让 MySQL 返回按 id 分组的数据,如下所示:

[1] => Art, Arnold, Anatoly
[2] => Beatrice, Bertha, Betty
[3] => Constantine, Cramer

我知道我可以执行简单的 SQL 选择,然后在 PHP 中循环结果,但我想让 MySQL如果可能的话处理分组。

I am trying to create a MySQL SELECT statement that will select a bunch of rows from a table and will group the results by the id of the row (multiple rows will have the same id).

Here's an example of what I'm trying to do. Let's say I have the following table:

id     |     name  
1      |     Art  
1      |     Arnold  
1      |     Anatoly  
2      |     Beatrice  
2      |     Bertha  
2      |     Betty  
3      |     Constantine  
3      |     Cramer  

I'd like to have MySQL return the data grouped by id like so:

[1] => Art, Arnold, Anatoly
[2] => Beatrice, Bertha, Betty
[3] => Constantine, Cramer

I know I could do a simple SQL select, then loop over the result in PHP, but I'd like to let MySQL handle the grouping if possible.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

静若繁花 2024-09-06 12:45:41

一种可能的解决方案是使用 MySQL 的 GROUP_CONCAT (expr) 函数。

SELECT
  GROUP_CONCAT(name)
FROM
  foo
GROUP BY
  id

但请记住:

结果被截断为 group_concat_max_len 系统变量,默认值为1024。

One possible solution is to use MySQL's GROUP_CONCAT(expr) function.

SELECT
  GROUP_CONCAT(name)
FROM
  foo
GROUP BY
  id

But keep in mind:

The result is truncated to the maximum length that is given by the group_concat_max_len system variable, which has a default value of 1024.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文