有没有办法将数据集中其余部分已知相同的值设为 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 |
+----+------+-----------------------+-----------------------+
这将允许显着减少内存使用,尤其是。在对大型数据集进行分组时。