【问题标题】:concatenate rows with same id in mariadb?在mariadb中连接具有相同ID的行?
【发布时间】:2018-06-03 02:12:49
【问题描述】:

我想将name 与相同的pid 连接起来。

以下是我正在尝试的查询。但它给了我错误:

#1064 - 您的 SQL 语法有错误;检查与您的 MariaDB 服务器版本相对应的手册,以在第 3 行的“@tbl1 WHERE pid = tbl1.pid FOR XM”附近使用正确的语法

SELECT *,STUFF((
            SELECT DISTINCT', ' + tbl1.name
            FROM @tbl1
            WHERE pid = tbl1.pid
            FOR XML PATH('')), 1, 2, '')

FROM (
    SELECT DISTINCT  pid
    FROM @tbl1
) tbl1
INNER JOIN tbl2 ON tbl2.pid = tbl1.pid

更新

样本数据

pid      name
1        Editor
1        Reviewer
7        EIC
7        Editor
7        Reviewer
7        Editor
19       EIC
19       Editor
19       Reviewer

所需数据

1 Editor,Reviewer
7 EIC,Editor,Reviewer
19 EIC,Editor, Reviewer

【问题讨论】:

  • 你确定你用的是mysql,貌似MSSQL function
  • 你是对的,它是 mssql 查询。我怎样才能在 mysql 中实现这一点?
  • 请在您的问题中包含示例数据、表格定义和预期输出
  • 为什么不包含pid 19?
  • 包括在内。

标签: mysql mariadb


【解决方案1】:

你可以在mysql中使用group_concat

select pid,group_concat(name)
from your_table
group by pid

它将返回 3 行,包括 pid 和逗号分隔的名称列表

另请注意“结果被截断为 group_concat_max_len 系统变量给出的最大长度,其默认值为 1024。该值可以设置得更高,尽管返回值的有效最大长度受以下限制max_allowed_pa​​cket 的值"

DEMO

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-05-12
    • 2022-12-14
    • 2018-12-26
    • 1970-01-01
    • 2016-02-23
    • 1970-01-01
    • 1970-01-01
    • 2023-04-11
    相关资源
    最近更新 更多