- 浏览: 441726 次
- 性别:
- 来自: 厦门
文章分类
最新评论
-
popotang:
ie6好像才会引起,而且githut上的最新版已经没有这个问题 ...
jquery.form.js ajaxsubmit上传文件 报对象不支持此属性或方法 -
ch_dj:
谢谢啊
j2se 用友面试题 -
chenzubin:
不错,支持一下
j2se 用友面试题
distinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用 它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是distinct只有用二重循环查询来解决,而这样对于一个数据量非常大的站来说,无疑是会直接影响到效率的。
下面先来看看例子:
table表
字段1 字段2 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条件里?能,照样报错。
------------------------------------------------------------------------------------------------------------
下面方法也不可行:
select *, count(distinct name) from table group by name
结果:
ORA-00979: not a GROUP BY expression
00979. 00000 - "not a GROUP BY expression"
依然报错,
group by 必须放在 order by 和 limit之前,不然会报错
------------------------------------------------------------------------------------------------------------
偶认为这样可行
select max(id), name from table group by name;
结果:
id name
1 a
2 b
4 c
5 d
参考资料:
http://www.cnblogs.com/dogxuefeng/archive/2012/06/21/2557700.html
http://stevenfeng.iteye.com/blog/841793
http://eric-yan.iteye.com/blog/1749440
下面先来看看例子:
table表
字段1 字段2 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条件里?能,照样报错。
------------------------------------------------------------------------------------------------------------
下面方法也不可行:
select *, count(distinct name) from table group by name
结果:
ORA-00979: not a GROUP BY expression
00979. 00000 - "not a GROUP BY expression"
依然报错,
group by 必须放在 order by 和 limit之前,不然会报错
------------------------------------------------------------------------------------------------------------
偶认为这样可行
select max(id), name from table group by name;
结果:
id name
1 a
2 b
4 c
5 d
参考资料:
http://www.cnblogs.com/dogxuefeng/archive/2012/06/21/2557700.html
http://stevenfeng.iteye.com/blog/841793
http://eric-yan.iteye.com/blog/1749440
发表评论
-
jdbc 大数据批量插入很慢问题解决
2019-07-02 17:21 2585普通的执行过程是:每处理一条数据,就访问一次数据库; ... -
查看mysql&sqlserver的一个数据库中各个表的数据量
2015-03-26 13:59 551mysql查看v3x数据库的表: use informati ... -
sql的AVG如何实现保留一位小数(数据库里为int型)?
2015-03-12 10:01 2242select b.unitCode,b.uni ... -
Sql Server 删除所有表
2015-03-09 11:27 674--/第1步**********删除所有表的外键约束***** ... -
sqlserver indexOf lastIndexOf
2015-01-13 13:53 1636//sqlserver lastIndexOf selec ... -
SQL Server数据库如何获取TEXT字段的内容长度
2015-01-12 14:45 1092SELECT length = DATALENGTH(pub_ ... -
Sqlserver 获取某个视图的字段名列表 获取某个表的字段名列表
2014-11-21 11:52 578--获取某个视图的字段名列表 Select o.Name A ... -
Sqlserver删除多表操作
2014-11-20 09:38 562DECLARE c2 cursor for sele ... -
ORA-22858: invalid alteration of datatype(varchar2转化clob)
2014-10-09 12:35 1306在11g下 --修改某字段类型 不能按照字段原来顺序( ... -
无法为数据库"xxxx"中的对象'xxxx'分配空间,因为'PRIMARY'文件组已满
2014-05-29 11:33 1472需要在文件--》添加--某个文件 具体参考如下: http: ... -
sqlserver text类型字段错误 net.sourceforge.jtds.jdbc.ClobImpl@66fa192的解决方法
2014-05-13 20:16 31391. SqlServer数据库中text/ntext字段,在用 ... -
svn number is larger than maximum
2014-04-11 19:27 16505svn number is larger than maxim ... -
电脑改密码,sqlserver要跟着改密码 否则用不了
2014-04-11 12:48 752我的电脑--》管理--》服务--》SQLServer--> ... -
数据库自动备份 并压缩 批处理工具 dbback-bat.rar
2014-03-19 12:56 524数据库自动备份 并压缩 批处理工具 详细如 附件。 -
PowerDesign16 Generate Java Code 生成Java代码
2014-03-18 13:52 1151常用的设置模板设置: 打开菜单栏 Language -> ... -
如何将sqlserver表中的数据导出sql语句或生成insert into语句
2014-01-02 16:19 698create proc proc_insert (@table ... -
zip版tomcat(6,7)不能注册成windows服务或者注册后不能启动的问题解决
2013-11-23 18:45 585http://blog.csdn.net/bigbird201 ... -
Oracle中SQLPLUS的常用指令收集与技巧
2013-09-27 10:13 524Oracle中SQLPLUS的常用指令收集与技巧 http: ... -
oracle账户锁定解决方法
2013-08-17 09:54 1033SQL> conn /as sysdba 已 ... -
Hibernate like 模糊查询参数化的问题
2013-06-25 16:07 792其实造成这个问题的根本原因还是对hibernate的使用不太了 ...
相关推荐
完美解决distinct中使用多个字段的方法,完美解决distinct中使用多个字段的方法完美解决distinct中使用多个字段的方法完美解决distinct中使用多个字段的方法完美解决distinct中使用多个字段的方法
以 d 打头的记录后, ORACLE 就停止遍历了!为啥,因为索引是有序的,当出现 d 打头的 记录后,绝对后面不可能再出现 c 打头的记录了,因为我们是查询=cc 的值,当然停住了。 随时停止检索相比遍历全表,明显是少...
9、DISTINCT .................................................................................................................................10 1.5、SQLPLUS 与 SQL 的关系 ............................
其三、职业方向多:Oracle数据库管理方向、Oracle开发及系统架构方向、Oracle数据建模数据仓库等方向。 四、 如何学习 认真听课、多思考问题、多动手操作、有问题一定要问、多参与讨论、多帮组同学 五、 体系结构 ...
1.22 用EXISTS替换DISTINCT 13 1.23 识别’低效执行’的SQL语句 14 1.24 用索引提高效率 14 1.25 索引的操作 15 1.26 多个平等的索引 16 1.27 等式比较和范围比较 17 1.28 不明确的索引等级 17 1.29 强制索引失效 18...
9、DISTINCT .............................................. 1.5、SQLPLUS 与 SQL 的关系................................ 1、SQLPLUS命令的功能: ................................... 2、查询 SQLPLUS 命令......
连接查询的方法是在SELECT命令的FROM子句中指定两个或多个将被连接查询的表或视图,并且在WHERE子句告诉ORACLE如何把多个表的数据进行合并。根据WHERE子句中的条件表达式是等还是不等式,可以把连接查询分为等式连接...
1.在多进程Oracle实例系统中,进程分为用户进程、后台进程和服务进程。 2.标准的SQL语言语句类型可以分为:数据定义语句(DDL)、数据操纵语句(DML)和数据控制语句(DCL)。 3.在需要滤除查询结果中重复的行时,必须...
WITH READ ONLY :默认可以通过视图对基表执行增删改操作,但是有很多在基表上的限制(比如:基表中某列不能为空,但是该列没有出现在视图中,则不能通过视图执行insert操作),WITH READ ONLY说明视图是只读视图,不...
枢轴(Oracle) 在指定的实例化视图中将无限数量的列行旋转到一列中。使用运行项目或将其关联为要透视的行创建为jar,并带有关联的属性文件。 java -jar pivot.jar TXN_SHIPPED_ITEM.properties已知的问题根本不处理...