MySQL简单连接避免多个重复行

MySQL简单连接避免多个重复行,mysql,sql,Mysql,Sql,假设我有两张桌子: 第1列有以下列: products -------- id name price 1 someproduct 99 第二 我想得到产品1的名称、价格和图片 SELECT products.name, products.price, productimages.img FROM products INNER JOIN productimages WHERE products.id=1 此查询提供以下结果: [ { name: 'somepro

假设我有两张桌子: 第1列有以下列:

products
--------
id   name        price
1  someproduct  99
第二

我想得到产品1的名称、价格和图片

SELECT products.name, products.price, productimages.img  FROM products INNER JOIN productimages WHERE products.id=1
此查询提供以下结果:

[ {
    name: 'someproduct',
    price: 99,
    img:
     'someimg' },
   {
    name: 'someproduct',
    price: 99,
    img:
     'someimgurl2' }
]
正如您所见,名称和价格重复出现。我试图得到的结果是:

[ {
    name: 'someproduct',
    price: 99,
    img:[
     'someimgurl','someimgurl2'] },
]
您可以使用聚合来获取单行。也许:

SELECT p.name, p.price, GROUP_CONCAT(pi.img) as img
FROM products p INNER JOIN
     productimages pi
     on p.id = pi.product_id
WHERE p.id = 1
GROUP BY p.name, p.price;

我还注意到您有一个
JOIN
子句,其中没有
ON
子句。这在MySQL以外的任何数据库中都可能是语法错误。

这会将2个图像合并为一个,并与分开,是否可以使img数组的每个图像元素都成为一个元素?所以img[0]=someimgurl和img[1]=someimgurl2或者我错了吗?@lastpoiny4这是不可能的,mysql返回完整的字段行,字段只能保存单个值。那么实现这一点的正确方法是什么?在将数据发送回客户端之前,我要在服务器端将它们分开吗?@lastpanoy4。MySQL中没有数组这样的东西。您需要在应用程序级别将结果字符串解析为数组。
SELECT p.name, p.price, GROUP_CONCAT(pi.img) as img
FROM products p INNER JOIN
     productimages pi
     on p.id = pi.product_id
WHERE p.id = 1
GROUP BY p.name, p.price;