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
相关推荐
根据提供的信息,我们可以总结出...通过以上知识点的介绍,可以了解到Oracle数据库的基本使用方法,包括如何使用SQLPlus工具执行SQL语句、如何进行简单的数据查询等。这些内容对于初学者来说是非常实用的基础知识。
- **随机取前10条不同的记录**:通过组合使用 ROWNUM 和 SELECT DISTINCT 来实现。 - **TRUNC函数**:用于去除小数部分。 - **修改表的一些常用语法**:如 ADD、MODIFY 和 DROP 等,用于表结构的修改。 - **舍入函数...
有近20年使用Oracle技术产品以及Oracle数据库管理员/Oracle数据库应用管理员的经验,是真正应用集群、性能调优以及数据库内部属性方面的专家。同时是一位演讲家及Oracle ACE。 JARED STILL 从1994年就开始使用...
《Oracle Database 11g完全参考手册》全面详细地介绍了Oracle Database 11g的强大功能,阐述了如何使用所有的新增功能和工具,如何执行功能强大的SOL查询,如何编写PL/SQL和SQL*Plus语句,如何使用大对象和对象,...
《Oracle Database 11g完全参考手册》全面详细地介绍了Oracle Database 11g的强大功能,阐述了如何使用所有的新增功能和工具,如何执行功能强大的SOL查询,如何编写PL/SQL和SQL*Plus语句,如何使用大对象和对象,...
其一、就业面广:全球前100强企业99家都在使用ORACLE相关技术,中国政府机构,大中型企事业单位都能有ORACLE技术的工程师岗位。 其二、技术层次深:如果期望进入IT服务或者产品公司(类似毕博、DELL、IBM等),...
- **排序与去重**:介绍 ORDER BY 和 DISTINCT 关键字的使用方法。 - **单行函数**:通常用于在结果集中对单个值进行操作,例如日期函数、字符串函数等。 - **子查询**:包括关联子查询和非关联子查询的区别,以及...
### Oracle 教学知识点详解 —— 数据的基本查询与常用函数 #### 一、基本查询语法与原理 **数据查询的原理:** 数据查询是数据库中最基础的操作之一,它通过指定要查询的列以及设定的查询条件,从原始数据表中...
- **方法**: 使用Oracle提供的内部函数,如NVL、DECODE等,来简化逻辑。 ##### 3.17 使用表的别名(Alias) - **优势**: 表别名可以提高代码可读性和维护性。 ##### 3.18 用EXISTS替代IN - **优势**: EXISTS通常比...
1. **选择适合的Oracle优化器**:Oracle数据库提供了两种主要的优化器——基于成本的优化器(CBO)和基于规则的优化器(RBO)。CBO根据统计信息和成本估算来选择执行计划,而RBO则按照预定义的规则执行。通常,CBO更...
### Oracle数据库SQL语句详解——SELECT查询与条件查询 #### 第一章 SELECT查询 ##### 1.1 基本语法 SELECT语句是Oracle数据库中最常用的查询数据的方法之一,其基本语法结构如下: ```sql SELECT <列名> FROM ...
select distinct object_type from dba_objects; 模式对象,schema —-> user.objects(某个用户下的某个对象) 在创建对象和访问对象前,首先创建对象的拥有者——用户 所有的对象在用户下 用户有相关的属性...
在“超越LINQ——LINQ最佳实践”这一主题中,我们将深入探讨LINQ的高级用法和技术,确保你能够充分利用这一强大的工具。 1. **查询表达式语法** LINQ的核心是查询表达式,它使用类似于SQL的语法进行数据查询。例如...
- **CowNewSQL的使用方法** #### 第10章 高级话题 **10.1 SQL注入漏洞攻防** - **SQL注入漏洞原理** - 利用SQL语句中的漏洞进行攻击。 - **过滤敏感字符** - 对输入进行转义或过滤。 - **使用参数化SQL** - ...
- 使用 `DISTINCT` 关键字去除重复记录。 **4.6 计算字段** - **常量字段** - 直接在 `SELECT` 语句中计算常量值。 - **字段间的计算** - 对字段进行加减乘除等运算。 - **数据处理函数** - 使用内置函数如 ...