首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Mysql >

数据分组,去重复记录,该如何处理

2012-04-27 
数据分组,去重复记录,急!SQL code//表CREATE TABLE tt (`_id` int(11) NOT NULL AUTO_INCREMENT,`_keyValu

数据分组,去重复记录,急!

SQL code
//表CREATE TABLE tt (  `_id` int(11) NOT NULL AUTO_INCREMENT,  `_keyValue` int(11) DEFAULT NULL COMMENT '主键值'  `_orderCode` int(11) DEFAULT NULL COMMENT '排序码',  PRIMARY KEY (`_id`))


字段_keyvalue 有重复值的

对_keyvalue进行分组,同类取出_ordercode最小的数据行
如:
_id _keyvalue _ordercode
1 1 0
2 2 1
3 1 1
4 3 1
5 2 0

结果:
_id _keyvalue _ordercode
1 1 0
4 3 1
5 2 0


[解决办法]
CREATE TABLE tt2 ( 
`_id` INT(11) NOT NULL AUTO_INCREMENT, 
`_keyValue` INT(11) DEFAULT NULL COMMENT '主键值' ,
`_orderCode` INT(11) DEFAULT NULL COMMENT '排序码',
KEY (`_id`)
)

_id _keyvalue _ordercode 
 3 3 1 
 4 1 0 
 8 5 1 
 11 8 1 
 12 10 1 
 15 12 1 
 52 2 0
上述结果不对吗?
[解决办法]
参考下贴中的多种方法

http://topic.csdn.net/u/20091231/16/2f268740-391e-40f2-a15e-f243b2c925ab.html
[征集]分组取最大N条记录方法征集,及散分....
[解决办法]
selct a.keyvalue , a.ordercode
from tt a 
left join 
( select keyvalue,min(ordercode) as mincode from tt group by ordercode ) as bwhere 
a.keyvalue=b.keyvalue 
and 
a.ordercode <= b.mincode;
[解决办法]
selct a.keyvalue , a.ordercode
from tt a
left join
( select keyvalue,min(ordercode) as mincode from tt group by keyvalue ) as b
where
a.keyvalue=b.keyvalue
and
a.ordercode <= b.mincode;


写错了 按照keyvalue分组
[解决办法]
select _keyvalue,min(_ordercode)
from tt 
group by _keyvalue

热点排行