table a
-------------------------------------------------
id name wishlist1 wishlist2 wishlist3
1 john 1 2 3
2 paul 4 5
table b
--------------------------------------------------
id goods
1 car
2 aircraft
3 bicycle
4 motorbike
5 ipad
result i want to get
---------------------------------------------------
john car aircraft bicycle
paul motorbike ipad
我怎么能得到这个结果? (在 mysql 中)
最佳答案
这最多输出 3 个愿望(当他们没有愿望时,愿望列中为空)
select
name,
g1.goods as wish1,
g2.goods as wish2,
g3.goods as wish3
from tablea a
left join tableb g1.id on g1.wishlist1
left join tableb g2.id on g1.wishlist2
left join tableb g3.id on g1.wishlist3
不过,如果您不介意以逗号分隔的愿望列表,这可能会更好,而且更整洁:
select
name,
group_concat(goods) as wishes
from tablea a
left join tableb b on b.id in (a.wishlist1, a.wishlist2, a.wishlist3)
group by name;
将输出:
name | wishes
------|----------------------
john | car,aircraft,bicycle
paul | motorbike,ipad
关于mysql连接问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6786974/