我有一个只有 2 列的表。 例如
table product.combinations
Column 1: product.id
Column 2: attribute.id
Product.id 是唯一的 每个产品可以有 1 个或多个属性。 没有属性的产品不在表中
例如
表产品.组合
产品.id |属性.id
1 | 1 |
1 | 2 |
2 | 1 |
2 | 2 |
5 | 1 |
5 | 3 |
9 | 2 |
9 | 3 |
9 | 5 |
现在我想做一个选择,结果如下
产品.id |属性1 |属性2 |属性 3 |属性 4 |属性5
1 | 1 | 2 | | |
2 | 1 | 2 | | |
5 | 1 | 3 | | |
9 | 2 | 3 | 5 | |
我已经尝试过使用枢轴,但未能获得良好的结果。 有人可以帮我吗?
最佳答案
第一:不要在表/列名称中使用点/句点,这不起作用,请使用下划线。
其次,如果可以将所有属性 id 放在逗号分隔的列表中,则可以执行以下操作(使用 MySQL 的 GROUP_CONCAT
函数):
mysql> SELECT
-> product_id, GROUP_CONCAT(attribute_id ORDER BY attribute_id) AS attributes
-> FROM product_combinations
-> GROUP BY product_id
-> ORDER BY product_id;
+------------+---------------+
| product_id | attributes |
+------------+---------------+
| 1 | 1,2 |
| 2 | 1,2 |
| 5 | 1,3 |
| 9 | 2,3,5 |
+------------+---------------+
4 rows in set (0.00 sec)
关于php - MySQL 从两列表中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30705474/