mysql去重复的问题

kisshim 2009-06-06 12:55:04
对于一个table:

uid name replynum
1 n1 5
2 n2 8
3 n3 7
1 n4 10
2 n5 99


如何得到结果:
uid name number
2 n5 99
1 n4 10
3 n3 7

将uid去重,相同uid时,选取它所对应的number最大的那个列

我是这样写的:
SELECT uid,name,max(replynum) as replynum FROM table WHERE GROUP BY uid ORDER BY replynum DESC

不知道为什么得不到正确的结果
...全文
425 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
qct0215 2011-11-29
  • 打赏
  • 举报
回复
你只需要 group by 要去重的字段,select uid, name, replynum group by uid
Czx_boy 2009-06-09
  • 打赏
  • 举报
回复
3.6.4. 拥有某个字段的组间最大值的行

任务:对每项物品,找出最贵价格的物品的经销商。

可以用这样一个子查询解决该问题:
SELECT article, dealer, price
FROM shop s1
WHERE price=(SELECT MAX(s2.price)
FROM shop s2
WHERE s1.article = s2.article);
Czx_boy 2009-06-09
  • 打赏
  • 举报
回复
mysql手册中的一段。

3.6.4. 拥有某个字段的组间最大值的行

任务:对每项物品,找出最贵价格的物品的经销商。

可以用这样一个子查询解决该问题:
SELECT article, dealer, price
FROM shop s1
WHERE price=(SELECT MAX(s2.price)
FROM shop s2
WHERE s1.article = s2.article);
qq14923349 2009-06-07
  • 打赏
  • 举报
回复
key主键就是自动重复

MASTER-SLAVE我之前作过

后来只能做环路,网上有资料
kisshim 2009-06-06
  • 打赏
  • 举报
回复
有人会吗,请教一下
outred2000 2009-06-06
  • 打赏
  • 举报
回复
select uid,name,replynum from (SELECT uid, name, replynum
FROM tbl_table
ORDER BY uid ASC , replynum DESC) AS tbl group by uid
outred2000 2009-06-06
  • 打赏
  • 举报
回复
试试看这个
SELECT * FROM tbl_table WHERE (uid,replynum) in (SELECT uid, max( replynum ) AS num
FROM tbl_table
GROUP BY uid)
ACMAIN_CHM 2009-06-06
  • 打赏
  • 举报
回复

建议能在贴子中把表结构,数据,期望的结果描述出来,这样获得解决方案的机会很更多。

当您的问题得到解答后请及时结贴.
http://topic.csdn.net/u/20090501/15/7548d251-aec2-4975-a9bf-ca09a5551ba5.html

随风 2009-06-06
  • 打赏
  • 举报
回复
哪里不一样?
是不是说没有排序?
kisshim 2009-06-06
  • 打赏
  • 举报
回复
发现这样的话,和上边的结果一样,也不是最终想要的结果
随风 2009-06-06
  • 打赏
  • 举报
回复
select v1.*,tab.name
from (select uid ,max(replynum) replynum
from tab
group by uid) v1
left join tab on tab.uid=v1.uid and tab.replynum=v1.replynum

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧