在Mysql中需要帮助来解决这个子查询

时间:2013-04-03 23:11:54

标签: mysql

我需要你的帮助来解决这个问题:

select idiomas.bandeira,conteudos.nid, dreg, titulo, tag from conteudos 
            inner join conteudos_tag on conteudos.nid = conteudos_tag.cod_conteudo
            inner join tagstree on conteudos_tag.cod_tag = tagstree.nid
            inner join idiomas on conteudos.nid_idioma = idiomas.nid
            order by conteudos.nid desc limit 5

这回归:

img/idiomas/pt.png;30;2013-04-04 12:41:00;titulo;Voip
img/idiomas/pt.png;30;2013-04-04 12:41:00;titulo;Linux
img/idiomas/pt.png;28;2012-08-07 01:50:18;Números e Tarifários;Números e tarifários
img/idiomas/pt.png;27;2012-08-07 01:33:48;Terminais VoIP2;Terminais
img/idiomas/pt.png;26;2012-08-03 19:06:13;Rede Estruturada;Rede Estruturada

我需要回报这个:

img/idiomas/pt.png;30;2013-04-04 12:41:00;titulo;Voip, Linux
img/idiomas/pt.png;28;2012-08-07 01:50:18;Números e Tarifários;Números e tarifários
img/idiomas/pt.png;27;2012-08-07 01:33:48;Terminais VoIP2;Terminais
img/idiomas/pt.png;26;2012-08-03 19:06:13;Rede Estruturada;Rede Estruturada

更改在第1行

韩国社交协会 锐

1 个答案:

答案 0 :(得分:2)

嗯,有点难以说,因为我真的不知道哪个列是哪个,但我估计:

select idiomas.bandeira,conteudos.nid, dreg, titulo,
GROUP_CONCAT(tag, SEPARATOR ', ') AS tag from conteudos 
        inner join conteudos_tag on conteudos.nid = conteudos_tag.cod_conteudo
        inner join tagstree on conteudos_tag.cod_tag = tagstree.nid
        inner join idiomas on conteudos.nid_idioma = idiomas.nid
GROUP BY conteudos.nid
        order by conteudos.nid desc limit 5

这将通过看似独特的nid对所有结果进行分组。如果同一nid有多个标记,则它们将存储在一列中,并以,分隔。在所有非聚合列上进行分组可能更准确,如果还有其他非唯一列,也可以使用GROUP_CONCAT