0

我有两列 user_id 和标签的表。

  user_id    tags
    1    <tag1><tag4>
    1    <tag1><tag2>
    1    <tag3><tag2>
    2    <tag1><tag2>
    2    <tag4><tag5>
    3    <tag4><tag1>
    3    <tag4><tag1>
    4    <tag1><tag2>

我想像这样将这两条记录合并为一条记录。

  user_id    tags
    1    tag1, tag2, tag3, tag4
    2    tags, tag2, tag4, tag5
    3    tag4, tag1
    4    tag1, tag2

我怎样才能得到这个?谁能帮我吗。还需要将标签字段转换为数组[]。我对典型的 sql 逗号知之甚少。我只知道基本情况。我是一个 Ruby on Rails 的家伙。

4

3 回答 3

1

您应该查看 mysql 中的 GROUP_CONCAT 函数。一个很好的例子是here

在您的情况下,它将类似于:

SELECT user_id, GROUP_CONCAT(tags) FROM tablename GROUP BY user_id
于 2013-05-21T11:47:16.633 回答
1

https://stackoverflow.com/questions/16218616/sql-marching-values-in-column-a-with-more-than-1-value-in-column-b/16218678#16218678的副本

select user_id, group_concat(tags separator ',')
from t
group by user_id
于 2013-05-21T11:49:44.817 回答
0

试试这个-:

SELECT t2.userid,
stuff((
SELECT ', ' + t1.tags
FROM table_name as t1
where t1.userid = t2.userid
FOR XML PATH('')
), 1, 2, '')
FROM table_name as t2
GROUP BY t2.userid

我希望这能够帮到你。

检查示例-: http ://www.sqlfiddle.com/#!3/85c89/6

于 2013-05-21T11:56:59.780 回答