求mysql 语句去重并按重复个数排序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求mysql 语句去重并按重复个数排序相关的知识,希望对你有一定的参考价值。

数据库里有两列数据。一列是ct_id有重复。另一列是排序值rank。希望先把重复ct_id的排序出来。然后按rank排序。求大师指点呀。
同样重复ct_id的,也按rank排序

参考技术A select *, count(distinct ct_id) from table group by rank 这样去除重复了 也排序好了呵呵!!! 参考技术B 假设按ct_id倒序, rank倒序: select * from tablename order by ct_id desc, rank desc;
这样记录按ct_id倒序,ct_id相同则按rank倒序, 不知道理解的对不对
参考技术C 这是tp5的形式:
$history_hot = db('history')->field('count(keyword) num,keyword')->group('keyword')->order('num desc')->limit('5')->select();
参考技术D 详细点啊,你这个怎么答。是先按照重复的次数多少的id排序,然后按照rank值排序吗?追问

是这个意思。先按重复多少排序,再按rank排序呀。就是排序的时候有重复的先显示呀。

本回答被提问者采纳

使用uniq命令给日志文件去重并排序

uniq

a.不加参数只对相邻的相同行去重

uniq test.txt

b.sort命令让重复的行相邻

先用sort做排序,让重复的行相邻,然后用uniq去重

sort test.txt | uniq

用sort -u即可实现该功能,这里的-u就是uniq

c.去重计数

参数-c --count 去重计数

sort test.txt | uniq -c

 

从文件中过滤重复信息

方法一:

1.文件信息

[root@localhost ~]# cat test.txt
https://www.baidu.com/index.php?tn=monline_3_dg
https://vip.iqiyi.com/waimeizhy1-pc.html/?fv=zz_5993b5deb9f24
https://www.jd.com/?cu=true&utm_source=cps.youmai.com&utm_medium=tuiguang&utm_campaign=t_1000049399_85292009&utm_term=4a4074858f4a46e6bc796373fd8931a2
https://pjjx.1688.com/?tracelog=cps&clickid=988602c34d86e07dd5a6c4e804992287
https://www.ctrip.com/?AllianceID=263200&sid=712562&ouid=&app=0101F00
https://vacations.ctrip.com/grouptravel
https://www.baidu.com/222
https://vip.iqiyi.com/waimei
https://vip.iqiyi.com/waimei
https://pjjx.1688.com/?tracelog=cps

2.使用awk -F 以"/“为分隔符过滤所需列

[root@localhost ~]# awk -F / ‘{print$3}‘ test.txt
www.baidu.com
vip.iqiyi.com
www.jd.com
pjjx.1688.com
www.ctrip.com
vacations.ctrip.com
www.baidu.com
vip.iqiyi.com
vip.iqiyi.com
pjjx.1688.com

3.使用sort排序后用uniq过滤 awk -F / ‘{print$3}‘ test.txt | sort | uniq -c

 

4.使用awk -F / ‘{print $3}‘ test.log | sort | uniq -c |sort -r将过滤的结果降序输出

 

方法二:

用cut方法处理

[root@localhost ~]# cut -d / -f3 test.txt
www.baidu.com
vip.iqiyi.com
www.jd.com
pjjx.1688.com
www.ctrip.com
vacations.ctrip.com
www.baidu.com
vip.iqiyi.com
vip.iqiyi.com
pjjx.1688.com

[root@localhost ~]# cut -d / -f3 test.txt | sort -r |uniq -c


以上是关于求mysql 语句去重并按重复个数排序的主要内容,如果未能解决你的问题,请参考以下文章

转转转--oracle 去重并按时间排序取第一条

MYSQL去重并删除数据最少的重复行

mysql语句,分组去重,排序问题

使用uniq命令给日志文件去重并排序

mysql之数据去重并记录总数

mysql之数据去重并记录总数