sql语句之distinct去重

首先给大家展示我要去重的内容(注:这是关联商品表和规格表查出来的内容,但是实际只需要其中的唯一商品页面展示即可)

关于去重,首先我想到的是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啦~~~希望能够帮助到你:)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值