我有两个mysql表,我想加入,但我想列'类别'的结果是在一个新的列,而不是行。
第一个看起来像这样
table name = petshop.product
|==========================|
|product_id | product_name |
|==========================|
| 1 | Dog & Cat Toy|
| 2 | Dog Food |
|==========================|
第二个看起来像这样
table name = petshop.category
|============================|
|category_id | category_name |
|============================|
| 1 |Dog |
| 2 |Food |
| 3 |Toy |
| 4 |Cat |
|============================|
我还有一个表来存储这样的关系
table name = petshop.product_category
=================================
|pc_id| product_id | category_id|
|===============================|
| 1 | 1 | 1 |
| 2 | 1 | 3 |
| 3 | 1 | 4 |
| 4 | 2 | 1 |
| 5 | 2 | 2 |
|===============================|
如何输出结果如下所示的表
|====================================================|
|product_name| category1 | category2 | category3 |
|====================================================|
|Dog&Cat Toy | Dog | Toy | Cat |
|Dog Food | Dog | Food | NULL |
|====================================================|
我读过关于pivot的文章,但我不能完全理解它(说实话,对mysql和一般的编码来说都是新手)。谢谢您!
1条答案
按热度按时间roejwanj1#
在mysql 8.0中,可以通过连接来解决这个问题,
row_number()
要枚举每个产品的类别,以及条件聚合以透视结果集,请执行以下操作: