MySQL简单连接避免多个重复行
假设我有两张桌子: 第1列有以下列: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
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;