SQL组结果排成一行

时间:2018-09-10 11:37:15

标签: mysql group-by

我有一个处理7种不同语言的数据库,我想在一行中返回所有post_content。 例: fr_content,en_content,es_content,int_content ... 我当前的SQL返回7行 enter image description here

我的sql是:

SELECT p.ID, t.trid, ptrans.*, pen.post_content
    FROM hex_posts p
    JOIN hex_icl_translations t 
        ON p.ID = t.element_id
    LEFT JOIN hex_icl_translations ptrans
        on ptrans.trid = t.trid
    LEFT JOIN hex_posts pen
        on pen.ID = ptrans.element_id
    WHERE  
        p.ID =  22790
    ORDER BY p.post_date DESC

ID是原始帖子,element_id是翻译过的帖子。

有什么主意如何将所有这些行分组为一个?

谢谢

1 个答案:

答案 0 :(得分:0)

使用group_concat()

SELECT p.ID, t.trid, ptrans.*, group_concat(pen.post_content SEPARATOR ', ')
        FROM hex_posts p
        JOIN hex_icl_translations t 
            ON p.ID = t.element_id
        LEFT JOIN hex_icl_translations ptrans
            on ptrans.trid = t.trid
        LEFT JOIN hex_posts pen
            on pen.ID = ptrans.element_id
        WHERE  
            p.ID =  22790
    group by p.ID, t.trid
        ORDER BY p.post_date DESC