mysql加入一对多关系并在不同行中打印
mysql join one to many relationship and print in different rows
我有一个 table 例如 citations
包含:
paperkey
1
2
和另一个 table source
包含
paperkey | authors
1 a
1 b
1 c
2 d
2 e
3 x
5 y
6 z
6 a
tablecitation
中的paperkey
是source
table中paperkey
的子集。所以我需要在 table 引用中使用 paperkey
的 authors
。我的预期输出是:
1 a
1 b
1 c
2 d
2 e
我试过了,但找不到相关查询。目前我有查询:
select a.paperkey, groupconcat(b.authors)
from citations a
left join source b
on a.paperkey = b.paperkey
group by a.paperkey;
但结果是
1 a,b,c
2 d,e
这是我能做的最好的了。但我需要生成我期望的输出,以便作者在不同的行中打印,我找不到任何类似的查询。
您不需要对结果进行分组,您应该只需要像这样对结果进行排序:
select a.paperkey, b.authors
from citations a
left join source b using(paperkey)
order by b.paperkey, b.authors;
我个人会使用,因为列名相同。
我有一个 table 例如 citations
包含:
paperkey
1
2
和另一个 table source
包含
paperkey | authors
1 a
1 b
1 c
2 d
2 e
3 x
5 y
6 z
6 a
tablecitation
中的paperkey
是source
table中paperkey
的子集。所以我需要在 table 引用中使用 paperkey
的 authors
。我的预期输出是:
1 a
1 b
1 c
2 d
2 e
我试过了,但找不到相关查询。目前我有查询:
select a.paperkey, groupconcat(b.authors)
from citations a
left join source b
on a.paperkey = b.paperkey
group by a.paperkey;
但结果是
1 a,b,c
2 d,e
这是我能做的最好的了。但我需要生成我期望的输出,以便作者在不同的行中打印,我找不到任何类似的查询。
您不需要对结果进行分组,您应该只需要像这样对结果进行排序:
select a.paperkey, b.authors
from citations a
left join source b using(paperkey)
order by b.paperkey, b.authors;
我个人会使用,因为列名相同。