仓酷云

标题: MYSQL教程之用distinct在MySQL中查询多条不反复纪录值 [打印本页]

作者: 乐观    时间: 2015-1-16 20:13
标题: MYSQL教程之用distinct在MySQL中查询多条不反复纪录值
曾经的功能列表可能会迅速变得过时了。而且,有些功能对有的应用程序非常重要,但是对别的应用程序则不一定。在利用MySQL时,偶然必要查询出某个字段不反复的纪录,固然mysql供应有distinct这个关头字来过滤失落过剩的反复纪录只保存一条,但常常只用它来前往不反复纪录的条数,而不是用它来前往不重纪录的一切值。其缘故原由是distinct只能前往它的方针字段,而没法前往别的字段,这个成绩让我困扰了好久,用distinct不克不及办理的话,我只要用二重轮回查询来办理,而如许关于一个数据量十分年夜的站来讲,无疑是会间接影响到效力的。以是我花了良多工夫来研讨这个成绩,网上也查不到办理计划,时代把伴侣拉来协助,了局是我们两人都忧郁了!

上面先来看看例子:

table
idname
1a
2b
3c
4c
5b

库布局也许如许,这只是一个复杂的例子,实践情形会庞大很多。

好比我想用一条语句查询失掉name不反复的一切数据,那就必需利用distinct往失落过剩的反复纪录。

selectdistinctnamefromtable
失掉的了局是:

name
a
b
c

仿佛到达效果了,但是,我想要失掉的是id值呢?改一下查询语句吧:

selectdistinctname,idfromtable

了局会是:

idname
1a
2b
3c
4c
5b

distinct怎样没起感化?感化是起了的,不外他同时感化了两个字段,也就是必需得id与name都不异的才会被扫除……

我们再改改查询语句:

selectid,distinctnamefromtable

很遗憾,除毛病信息你甚么也得不到,distinct必需放在开首。难到不克不及把distinct放到where前提里?能,还是报错。。。。。。。

很贫苦吧?的确,费经心思都没能办理这个成绩。没举措,持续找人问。

拉住公司里一java程序员,他给我演示了Oracle里利用distinct以后,也没找到mysql里的办理计划,最初上班之前他倡议我尝尝groupby。

试了半天,也不可,最初在mysql手册里找到一个用法,用group_concat(distinctname)共同groupbyname完成了我所必要的功效,镇静,天助我也,从速尝尝。

报错。。。。。。。。。。。。忧郁。。。。。。。连mysql手册也跟我过不往,先给了我但愿,然后又把我推向扫兴,好狠哪。。。。

再细心一查,group_concat函数是4.1撑持,晕,我4.0的。没举措,晋级,升完级一试,乐成。。。。。。

终究弄定了,不外如许一来,又必需请求客户也晋级了。

俄然灵机一闪,既然可使用group_concat函数,那别的函数能行吗?

赶忙用count函数一试,乐成,我。。。。。。。想哭啊,费了这么多光阴。。。。。。。。本来就这么复杂……

如今将完全语句放出:

select*,count(distinctname)fromtablegroupbyname

了局:

idnamecount(distinctname)
1a1
2b1
3c1

最初一项是过剩的,不必管就好了,目标到达。

唉,本来mysql这么笨,悄悄一下就把他骗已往了,忧郁也就我吧(对了,另有容容那家伙),如今拿出来但愿人人不要被这成绩折腾。

哦,对,再特地说一句,groupby必需放在orderby和limit之前,否则会报错.
更忧郁的事变产生了,在筹办提交时容容发明,有更复杂的办理办法:

selectid,namefromtablegroupbyname

看来对mysql的懂得仍是太浅薄了,不怕被笑话,收回来让人人别犯一样的毛病。
这一切听起来不错,无疑DBaaS具有很多相对于RDBMS的优势。然而MySQL学习教程,DBaaS也有其局限性,云服务中固有的局限性就是之一。当客户开始将数据放入云端时,他们会遭遇到无法控制的网络性能问题。
作者: 飘飘悠悠    时间: 2015-1-24 16:01
学习SQL语言的话如果要学会去做网站就不是很难!但是要做数据库管理的话就有难度了!
作者: 小妖女    时间: 2015-2-2 10:25
总感觉自己还是不会SQL
作者: 深爱那片海    时间: 2015-2-7 18:07
如果我们从集合论(关系代数)的角度来看,一张数据库的表就是一组数据元的关系,而每个SQL语句会改变一种或数种关系,从而产生出新的数据元的关系(即产生新的表)。
作者: 透明    时间: 2015-2-22 22:11
SQLServer的异构移植功能个人感觉最好了。(如果对比过SQLServer的链接服务器和Oracle的透明网关的朋友会发现SQLServer的sp_addlinkedserver(openquery)异构数据库系列比Oracle真是强太多了。)
作者: 谁可相欹    时间: 2015-3-7 04:03
所以你总能得到相应的升级版本,来满足你的需求。
作者: 若相依    时间: 2015-3-14 11:46
数据库物理框架没有变动undo和redo都放在数据库得transaction中,个人感觉是个败笔。如果说我们在设计数据库的时候考虑分多个数据库,可能能在一定程度上避免I/O效率问题。
作者: 山那边是海    时间: 2015-3-21 06:49
始终遗憾SQLServer的登陆无法分配CPU/内存占用等指标数。如果你的SQLServer给别人分配了一个只可以读几个表的权限,而这个家伙疯狂的死循环进行连接查询,会给你的系统带来很大的负担。




欢迎光临 仓酷云 (http://ckuyun.com/) Powered by Discuz! X3.2