更好的头衔?请编辑。
有两张桌子:
# table1
id name desc
--------------------
1 Nim blah
2 Rod blah
3 Nero blah
# table2
id_table1 rank url
----------------------
1 1 U11
1 2 U12
1 3 U13
2 1 U21
3 1 U31
3 2 U32
目前我正在使用JOIN查询,通常会获得:
id name desc url
---------------------
1 Nim blah U11
1 Nim blah U12
1 Nim blah U13
2 Rod blah U21
3 Nero blah U31
3 Nero blah U32
我想知道是否有一个查询会提供类似的内容:
id name desc url(1) url(2) url(3)
-------------------------------------
1 Nim blah U11 U12 U13
2 Rod blah U21 NULL NULL
3 Nero blah U31 U32 NULL
答案 0 :(得分:0)
假设您知道潜在列的数量,一个选项是使用conditional aggregation
来pivot
您的结果:
select t1.id, t1.name, t1.desc,
max(case when t2.rank = 1 then t2.url end) url1,
max(case when t2.rank = 2 then t2.url end) url2,
max(case when t2.rank = 3 then t2.url end) url3
from table1 t1
join table2 t2 on t1.id = t2.id_table1
group by t1.id, t1.name, t1.desc
答案 1 :(得分:0)
您是否需要单列中的选项?否则group_concat
会很有趣:
SELECT t1.id, t1.name, t1.desc,
group_concat(DISTINCT t2.url) as urls
FROM table1 t1
INNER JOIN table2 t2
ON t.id = t2.id_table1;