在SQL中使用Pivot很困难

时间:2013-05-10 22:06:40

标签: mysql sql pivot

我有两个表,titleterritory。 Territory告诉我标题的位置:

`title`
- id
- name

`territory`
- title_id (FK)
- territory

我希望输出看起来像这样:

id      name     territory     territory     territory     etc...
1       Titanic  US            GB            FR

我目前正在进行INNER JOIN,它为我提供了三行而不是一行:

SELECT * FROM title inner join territory on title.id = territory.title_id

我如何在上面的输出中得到它,每个标题都有一行,并且所有地区都列在该行中?

1 个答案:

答案 0 :(得分:2)

快速替代解决方案可以是在一列中汇总所有地区:

SELECT t.id, t.name, GROUP_CONCAT(tr.territory, ',') AS `territories`
    FROM title t
        JOIN territory tr ON t.id = tr.title_id
GROUP BY t.id, t.name

以后通常很容易将结果拆分到您的应用程序中。但如果你真的想要一个支点you'll have to be tricky

关于你的标题,除非你不确定标题是否受到影响,否则不需要在这里使用外部联接。在这种情况下,请改用LEFT JOIN