CREATE TABLE `wsz` (
  `name` char(2) NOT NULL,
  `money` int(11) NOT NULL,
  `time` date NOT NULL,
  KEY `name` (`name`,`money`,`time`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;#
# 导出表中的数据 `wsz`
#INSERT INTO `wsz` (`name`, `money`, `time`) VALUES 
('a', 10, '2011-06-01'),
('a', 0, '2011-06-01'),
('a', 10, '2011-06-01'),
('a', 0, '2011-06-01'),
('b', 6, '2011-06-01'),
('b', 0, '2011-06-01'),
('b', 6, '2011-06-01'),
('b', 0, '2011-06-01'),
--------------
只删2011-06-01的重复的记录,最后结果要:a 10 2011-06-01
a  0 2011-06-01
b  6 2011-06-01
b  0 2011-06-01

解决方案 »

  1.   

    creae table tb_temp select name, money, time from tb group by name,money,time
    drop tabl tb;alter table tb_temp rename tb;
      

  2.   

    select distinct `name`, `money`, `time` from `wsz` 
      

  3.   

    最好是给你的数据加上主键ID
    INSERT INTO `wsz` ('id',`name`, `money`, `time`) VALUES  
    (1,'a', 10, '2011-06-01'),
    (2,'a', 0, '2011-06-01'),
    (3,'a', 10, '2011-06-01'),
    (4,'a', 0, '2011-06-01'),
    (5,'b', 6, '2011-06-01'),
    (6,'b', 0, '2011-06-01'),
    (7,'b', 6, '2011-06-01'),
    (8,'b', 0, '2011-06-01')delete   wsz
    where   id   not   in   ( 
    select   max(id)   from   wsz   
    group   by   name,money) 
    select   max(id)   from   wsz   
    group   by   name,money

    分组查询出重复记录id最大的
    然后id not in();