在mysql数据库中如何让某个字段有重复的只取一条

idfidtitledate114标题107-01214标题207-02315标题307-03416标题407-04如上表,我想将fid相同的去掉重复,取最后一次添加的,... id fid title date
1 14 标题1 07-01
2 14 标题2 07-02
3 15 标题3 07-03
4 16 标题4 07-04

如上表,我想将fid相同的去掉重复,取最后一次添加的,也就是id最大的值。最后结果能得到下表的情况。
id fid title date
2 14 标题2 07-02
3 15 标题3 07-03
4 16 标题4 07-04
展开
 我来答
鱼尾挚爱白菜
2018-04-17 · TA获得超过2198个赞
知道小有建树答主
回答量:20
采纳率:0%
帮助的人:2.6万
展开全部

select *

from table  ###

where not exists (
select * from table  ###
where # = #
and ## < ##
)

在使用mysql时,有时需要查询出某个字段不重复的记录,虽然mysql提供 有distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是 distinct只能返回它的目标字段,而无法返回其它字段,这个问题让我困扰了很久,用distinct不能解决的话,只有用二重循环查询来解决。

给个例子把,比如:表table_a 4条数据

id A B C D
01 ab 1a2 1b2 121
02 ab 2a3 3b3 4a1
03 ac 1a2 1b2 121
04 ac 2a4 3b2 52g

何让A字段重复取条 比
01 ab 1a2 1b2 121
03 ac 1a2 1b2 121

保留相同A值id行

select *
from table_a a

where not exists (
select 1 from table_a b
where b.A = a.A
and b.id < a.id
)

华夏日长兴
2013-07-04 · TA获得超过9592个赞
知道大有可为答主
回答量:6305
采纳率:85%
帮助的人:3732万
展开全部
select max(id) as id,fid,title,date from table group by fid,title,date
更多追问追答
追问
不对,fid还是重复出现的
追答
select a.* from tb a,(select max(id) as id,fid from tb group by fid) b
where a.id=b.id and a.fid=b.fid
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
尋_常
2013-07-04 · TA获得超过837个赞
知道小有建树答主
回答量:529
采纳率:0%
帮助的人:500万
展开全部
select * from (select * from a order by id desc) as b group by fid
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式