问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

Mybatis plus的数据库查询的distinct效果如何实现?

发布网友 发布时间:2022-04-25 14:13

我来回答

3个回答

懂视网 时间:2022-05-03 01:53


下面先来看看例子: 

     table 
   id name 
   1 a 
   2 b 
   3 c 
   4 c 
   5 b 

库结构大概这样,这只是一个简单的例子,实际情况会复杂得多。 

比如我想用一条语句查询得到name不重复的所有数据,那就必须使用distinct去掉多余的重复记录。 

select distinct name from table 
得到的结果是: 

   name 
   a 
   b 
   c 

好像达到效果了,可是,我想要得到的是id值呢?改一下查询语句吧: 

select distinct name, id from table

结果会是:

   id name
   1 a
   2 b
   3 c
   4 c
   5 b

distinct怎么没起作用?作用是起了的,不过他同时作用了两个字段,也就是必须得id与name都相同的才会被排除。。。。。。。

我们再改改查询语句: 

select id, distinct name from table 

很遗憾,除了错误信息你什么也得不到,distinct必须放在开头。难到不能把distinct放到where条件里?能,照样报错。。。。。。。 

很麻烦吧?确实,费尽心思都没能解决这个问题。没办法,继续找人问。 

拉住公司里一JAVA程序员,他给我演示了oracle里使用distinct之后,也没找到mysql里的解决方案,最后下班之前他建议我试试group by。 

试了半天,也不行,最后在mysql手册里找到一个用法,用group_concat(distinct name)配合group by name实现了我所需要的功能,兴奋,天佑我也,赶快试试。 

报错。。。。。。。。。。。。郁闷。。。。。。。连mysql手册也跟我过不去,先给了我希望,然后又把我推向失望,好狠哪。。。。 

再仔细一查,group_concat函数是4.1支持,晕,我4.0的。没办法,升级,升完级一试,成功。。。。。。 

终于搞定了,不过这样一来,又必须要求客户也升级了。 

突然灵机一闪,既然可以使用group_concat函数,那其它函数能行吗? 

赶紧用count函数一试,成功,我。。。。。。。想哭啊,费了这么多工夫。。。。。。。。原来就这么简单。。。。。。 

现在将完整语句放出: 

select *, count(distinct name) from table group by name 

结果: 

   id name count(distinct name) 
   1 a 1 
   2 b 1 
   3 c 1 

最后一项是多余的,不用管就行了,目的达到。。。。。 

唉,原来mysql这么笨,轻轻一下就把他骗过去了,郁闷也就我吧,现在拿出来希望大家不要被这问题折腾。 

哦,对,再顺便说一句,group by 必须放在 order by 和 limit之前,不然会报错,差不多了,我继续忙碌。。。。。。

MySql中distinct的用法

标签:完整   原因   重复记录   color   程序   zoom   oom   rap   过滤   

热心网友 时间:2022-05-02 23:01

1. excel 中 怎么实现sql中的distinct 功能,在sheet中是数据源,把distinct的结果数据显示在sheet2中

2. 在数据库的设计中,如何实现Distinct操作呢?一般有两种基本思路:排序(Sort)法,哈希(Hash)法。
3. 排序法将表格中的数据全部按照distinct指定的列为key进行排序,然后逐行迭代,每迭代出一行数据都与上一行数据根据key作对比,如果相同,则丢弃当前行继续迭代下一行,如果不同则输出。排序法带来的一个副作用就是数据输出按照key有序。mysql在某些情况下不是使用排序法,通过下面的输出可以观察到行并不是有序的:

热心网友 时间:2022-05-03 00:19

wrapper.setSqlSelect("distinct columnName");
service.selectMaps(wrapper);
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
表格列求和公式怎么设置 求和函数公式怎么输入 北京注册成立一个公司需要多少钱 北京公司都是什么 手机导航地图语音怎么下载 如何分别真金和仿金首饰 怎样区分真金和仿金首饰呢 小学生新年晚会主持人的串词!!(不要太多)急 大大后天就需要了!!!_百度... 周年晚会策划公司 奥格瑞玛传送门大厅在哪 奥格瑞玛传送门大厅怎么走 oracle和mysql 有什么区别? 解释SQL、SQL Plus和PL/SQL的区别与联系 为什么发廊门前都有那个转转的东西! 为什么理发店门口都有旋转彩灯 理发店门口的“旋转三色柱”,到底有何含义? 谁知道理发店前面那种旋转的东西叫什么吗? 我在美发店办了一张卡后来店转给别人了,他们不在为我服务了,我该怎么办? 怎么写理发店转让? 理发店门前为什么要有个会转的东西?什么意思? 为什么理发店门口都有旋转的灯箱,有什么来历? 理发店转让、里面的会员卡可以单独转让给其他理发店么?怎么算的?_百度问一问 理发店被转让了员工可以离职吗? 理发店转让后储蓄卡不能退 电脑加载视频加载到一半就不动了 然后就是加载视频失败是怎么回事??? 美发店转让需要注意哪些问题!【详细点】谢谢!! 为什么我的电脑放不出视频? 请问理发店门前转灯来历是什么? 电脑视频看不了,屏幕上一直显示的是加载中 自己的理发店转让给别人,两年后想收回合理吗? 理发店外面的转圈柱子是什么东西? linux的mysql运行时遇到了些问题。 mybatisplus 怎么修改数据 sql plus如何修改数据库的表名字 我用mybatis plus查询mysql数据库,表有数据,但后台查询不到,返回空串... 如何获取mysql帮助信息 如何在Sql plus执行带参数的存储过程 mysql文件导入现有数据库表中 Sql Plus输入了用户名之后但是输入不了口令(新手) MySQL怎么连接Oracle数据库呢 mysql 里是否有sql%notfound 《人世间》王阳说蔡晓光和周蓉是灵魂伴侣,所谓的“灵魂伴侣”究竟是什么? 灵魂伴侣和恋人的区别 爱情和灵魂伴侣的区别 灵魂伴侣是怎样遇到的 灵魂伴侣的介绍 遇上了「灵魂伴侣」是怎样的感受? i begin to do my homework 走着路含着糖i的情侣网名 谁能帮我把 I don't know 弄成一个好看点的网名!有分拿! 卡伊娃i的情侣网名拜托知道一定给我说