mysql one-to-many 导出excel

问题是这样的:

数据库里有一个user table 如:(user_id, user_name)
还有一个 research field table (research_field_id, research_field_name)

一个user可以有多个research field, 反之也可以。

一个user_researchfield table连接这两个 table, 即两个 one-to-many

现在要查询每个user所对应的 research field,用inner join出来的结果是这样的:
user_id | research_field_id
1 | 1
1 | 2
2 | 1
2 | 3

....

现在想把他导出到excel,变成这样:
user_id | research_field_id_1 | research_field_id_2 | research_field_id_3 | research_field_id_4
1 | 1 | 2 | N/A | N/A
2 | 1 | 3 | N/A | N/A

请教大虾们有没有什么办法?万分感谢。。。

[b]问题补充:[/b]
谢谢FengShen_Xia!对我来说的确有点难度。。
有没有不用oracle的方法?比方说用mysql...那个decode好象是oracle特有的。

我自己也研究了很久,不过一直没想出来。。。

你说的mysql中类似oracle的decode函数功能,其实就是不同数据库的不同函数而已,功能上是一样的。

在mysql中你可以通过if或者case-when来实现类似oracle的decode函数功能。

Oracle下的SQL语句:

select user_id,
max(decode(seq, 1, research_field_id, null)) research_field_id_1,
max(decode(seq, 2, research_field_id, null)) research_field_id_2,
max(decode(seq, 3, research_field_id, null)) research_field_id_3,
max(decode(seq, 4, research_field_id, null)) research_field_id_4
from (select user_id,
research_field_id,
row_number() over(partition by user_id order by user_id desc) seq
from zz_test)
where seq <= 4
group by user_id

结果就跟你上面的一样
user_id | research_field_id_1 | research_field_id_2 | research_field_id_3 | research_field_id_4
1 | 1 | 2 | N/A | N/A
2 | 1 | 3 | N/A | N/A