2

我想加入表 Documents(id, name) 和 Tags(tagId, tagname, docId(FK))。然而,结果将返回许多冗余行,因为一个文档可以有许多标签:

Document_name |Tag
----------------------
document01     tag01
document01     tag02
document02     tag01

我试图解决的只是:

document_name |Tags
----------------------------
document01    | tag01, tag02
document02    | tag01

或者可以是这样的:

Document_name |Tag_1   |Tag_2  |Tag_...
---------------------------------------
document01     tag01  |tag02
document02     tag01

任何人都知道如何实施这种情况?非常感谢!(我试图在这个网站上找到其他答案,但我不知道在这种情况下搜索合适的关键字)

4

3 回答 3

2

如果您使用的是 MySQL,您可以这样做:

select document_name, group_concat(tag SEPARATOR ', ')
from Documents
group by document_name
于 2012-07-05T06:14:36.103 回答
1

对于 MS-SQL 试试这个

select 
    d1.Document_name, 
    ( 
        select d2.Tag +','
        from Docs d2
        where d2.Document_name = d1.Document_name
        for xml path('')
    ) as Tags
from Docs d1
group by d1.Document_name
于 2012-07-05T06:30:28.337 回答
0

在 MySQL 中:

SELECT doc.name, GROUP_CONCAT( tag.tagname SEPARATOR ', ') 
       FROM documents AS doc
       JOIN Tags AS tag ON doc.id = tag.docId
       GROUP BY tag.docId

结果:


document_name |Tags
----------------------------
document01    | tag01, tag02
document02    | tag01
于 2012-07-05T06:50:16.733 回答