设为首页收藏本站

融智技术学院

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 435|回复: 0

【数据库每日一问】如何在多列上执行去重复?

[复制链接]
MrLi 发表于 2013-12-26 16:00:01 | 显示全部楼层 |阅读模式

问:我需要从表中检索所有行,这个数据表的2列组合都是不同的。所以,我希望只检索到同一天以同样的价格销售的产品,而不包含其他的产品。根据日期和价格就可以确定产品,可以更新status列为有效性。

所以我想:
  1. UPDATE sales
  2. SET status = 'ACTIVE'
  3. WHERE id IN (SELECT DISTINCT (saleprice, saledate), id, count(id)
  4.              FROM sales
  5.              HAVING count = 1)
复制代码
我的能力有限,只能到这一步。
答:
SELECT DISTINCT a,b,c FROM t
是大致相当于:
  1. SELECT a,b,c FROM t GROUP BY a,b,c
复制代码
使用GROUP BY语法,是很不错的,因为它的功能更强大。
为了您的查询,我可以这样执行:
  1. UPDATE sales
  2. SET status='ACTIVE'
  3. WHERE id IN
  4. (
  5.     SELECT id
  6.     FROM sales S
  7.     INNER JOIN
  8.     (
  9.         SELECT saleprice, saledate
  10.         FROM sales
  11.         GROUP BY saleprice, saledate
  12.         HAVING COUNT(*) = 1
  13.     ) T
  14.     ON S.saleprice=T.saleprice AND s.saledate=T.saledate
  15. )
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

新突破电商

小黑屋|手机版|Archiver|融智技术学院 ( 京ICP备09018999号  

GMT+8, 2018-6-21 14:49

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表