求mysql 语句去重并按重复个数排序
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求mysql 语句去重并按重复个数排序相关的知识,希望对你有一定的参考价值。
数据库里有两列数据。一列是ct_id有重复。另一列是排序值rank。希望先把重复ct_id的排序出来。然后按rank排序。求大师指点呀。
同样重复ct_id的,也按rank排序
这样记录按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 语句去重并按重复个数排序的主要内容,如果未能解决你的问题,请参考以下文章