MySQL 查询联结 table returns 重复行

MySQL querying a junction table returns duplicate rows

我有以下 table 结构:

所以一个产品可能有多个 product_type

当我在 MySQL 中加入时,每个 product_type 都会得到重复的 product 记录。因此,例如,如果我有一个名为 Actifoam 的产品并且它在 products_types table 中有 2 条记录,那么查询的结果将包括 Actifoam 两次(每个都有不同的product_type.

这是我的查询:

SELECT DISTINCT product.*, product_type.name as product_type_name
FROM products_types
JOIN product_type ON product_type.id = products_types.product_type_id
JOIN product ON product.id = products_types.product_id

查询结果显示如下:

[
    0 => [
        'id' => 'recccAQHxsb4OEsX6'
        'name' => 'Actifoam'
        'product_type_name' => 'Silver Dressing'
    ]
    1 => [
        'id' => 'recccAQHxsb4OEsX6'
        'name' => 'Actifoam'
        'product_type_name' => 'Foam'
    ]
]

我不希望 product 记录像这样出现多次,如果有多个 product_types.

,我希望所有内容都出现在一行中

任何人都知道我如何才能做到这一点?

DISTINCT 仅当 SELECT 语句中所有列的 2 行具有完全相同的对应值时,才会 return 唯一行。在您的情况下,您需要 GROUP BYGROUP_CONCAT.

GROUP_CONCAT 将 return product_type_name 以逗号分隔。

SELECT product.*, GROUP_CONCAT(product_type.name) as product_type_name
FROM products_types
JOIN product_type ON product_type.id = products_types.product_type_id
JOIN product ON product.id = products_types.product_id
GROUP BY product.id