データセットの残りの部分で同じであることがわかっている値を NULL にする方法はありますか?
mysql> SELECT
-> `p1`.`id`,
-> `p1`.`name`,
-> `pp1`.`name` `product_property_name`,
-> `pp1`.`value` `product_property_name`
-> FROM
-> `product` `p1`
-> INNER JOIN
-> `product_property` `pp1`
-> ON
-> `p1`.`id` = `pp1`.`product_id`;
+----+------+-----------------------+-----------------------+
| id | name | product_property_name | product_property_name |
+----+------+-----------------------+-----------------------+
| 1 | Tar | foo | bar |
| 1 | Tar | foo1 | bar1 |
| 1 | Tar | foo2 | bar2 |
| 2 | Qaz | too | doo |
| 2 | Qaz | too1 | doo1 |
+----+------+-----------------------+-----------------------+
5 rows in set (0.00 sec)
この場合、 withproduct
のために複数回返されます。結果をグループ化するには、すべての製品の最初の行のみが必要です。INNER JOIN
product_property
したがって、目的の出力:
+----+------+-----------------------+-----------------------+
| id | name | product_property_name | product_property_name |
+----+------+-----------------------+-----------------------+
| 1 | Tar | foo | bar |
| 1 | NULL | foo1 | bar1 |
| 1 | NULL | foo2 | bar2 |
| 2 | Qaz | too | doo |
| 2 | NULL | too1 | doo1 |
+----+------+-----------------------+-----------------------+
これにより、特にメモリ使用率を大幅に削減できます。大規模なデータセットをグループ化する場合。