+ -
当前位置:首页 → 问答吧 → 问一个mysql 维护一张表的sql语句如何写

问一个mysql 维护一张表的sql语句如何写

时间:2011-08-28

来源:互联网

比如,我有一张表,如下:
id user pass time ip
1 小张 123 2011-07-08 8.8.8.8
2 小李 234 2011-07-09 7.7.7.7
3 小李 234 2011-07-09 7.7.7.7
4 小张 124 2011-07-10 8.8.8.8

是这样的,user,pass,ip这3个字段一定要不相同才能被保留
其中id为1和4的user是一样的,但是其中pass不一样,可以保留,但是id为2和3,三个字段都一样,我想只保留最后的一条记录,最后的结果是:
id user pass time ip
1 小张 123 2011-07-08 8.8.8.8
3 小李 234 2011-07-09 7.7.7.7
4 小张 124 2011-07-10 8.8.8.8

可以用group by 分组,可往往他得到的数据是最前面的,而不是最后的,有哪位高手能帮我想个sql语句,并且执行效率高,表有10万条记录,其中重复数据很多。谢谢,并且有撒建议给我,比如如何写触发器,在进库的时候可以过滤掉重复数据,保留最新的。等等等~

作者: a419891509   发布时间: 2011-08-28

a419891509 
  '截至2011-08-28 22:10:37 用户结帖率0.00%


当您的问题得到解答后请及时结贴.
http://topic.csdn.net/u/20090501/15/7548d251-aec2-4975-a9bf-ca09a5551ba5.html
http://topic.csdn.net/u/20100428/09/BC9E0908-F250-42A6-8765-B50A82FE186A.html
http://topic.csdn.net/u/20100626/09/f35a4763-4b59-49c3-8061-d48fdbc29561.html

8、如何给分和结贴?
http://community.csdn.net/Help/HelpCenter.htm#结帖


作者: ACMAIN_CHM   发布时间: 2011-08-28

SQL code
Delete a from我有一张表 a left join (select max(id) as id from我有一张表 group by user,pass,ip) b on a.id=b.id
Where b.id is null;

作者: ACMAIN_CHM   发布时间: 2011-08-28

SQL code
select  *
from tb A
where not exist (select 1 from tb where A.id<id and A.user=user and A.pass=pass and A.ip=ip)

作者: rucypli   发布时间: 2011-08-28

csdn论坛如何结贴??


点击结贴,转到另一个界面,可是给各位设置好分数后,点击确定结贴,提示“结贴给分与点数不符,请重新分配”,这是怎么回事?该如何解决??

作者: rucypli   发布时间: 2011-08-28