如何显示那样的SQL结果

时间:2012-07-05 06:10:40

标签: sql join

我想连接表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

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

3 个答案:

答案 0 :(得分:2)

如果你使用MySQL,你可以这样做:

select document_name, group_concat(tag SEPARATOR ', ')
from Documents
group by document_name

答案 1 :(得分: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

答案 2 :(得分: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
相关问题