首先给大家展示我要去重的内容(注:这是关联商品表和规格表查出来的内容,但是实际只需要其中的唯一商品页面展示即可)
关于去重,首先我想到的是distinct关键字
1,作用于单列去重
SELECT distinct(wg.id)
FROM
ws_goods wg
LEFT JOIN ws_good_price gp ON gp.goodsId = wg.id
WHERE
wg.goodsCategoryOneId = 74
AND wg.goodsPlateForm = 1
AND wg.goodsUpsales = 3
AND gp.mount > 0
ORDER BY
wg.`order` ASC
效果是显著的,但是不能显示其他列的内容,这就看着有些揪心了~,于是,我想出了第二种方案
2,作用于多列去重
SELECT distinct wg.id,wg.goodsNo,wg.goodsName,gp.originPrice,gp.price
FROM
ws_goods wg
LEFT JOIN ws_good_price gp ON gp.goodsId = wg.id
WHERE
wg.goodsCategoryOneId = 74
AND wg.goodsPlateForm = 1
AND wg.goodsUpsales = 3
AND gp.mount > 0
ORDER BY
wg.`order` ASC
效果如下
在这里看上去好像跟没有写distinct查询出来的记录一毛一样,实际上它是根据所有的字段去重的,如果这里有两条一样的数据,那你就可以看到效果啦~~
基于我这里数据的特殊性,貌似distinct不能完全满足我的需求:(
不如试试这个
select distinct(wg.id),wg.goodsNo,wg.goodsName,gp.originPrice,gp.price
from ws_goods wg
LEFT JOIN ws_good_price gp ON gp.goodsId = wg.id
WHERE
wg.goodsCategoryOneId = 74
AND wg.goodsPlateForm = 1
AND wg.goodsUpsales = 3
AND gp.mount > 0
GROUP BY wg.id
ORDER BY
wg.`order` ASC
简单一步操作就ok啦~~~希望能够帮助到你:)