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
结果:
id name count(distinct name)
1 a 1
2 b 1
3 c 1
最后一项是多余的,不用管就行了,目的达到。。。。。
group by 必须放在 order by 和 limit之前,不然会报错
下面先来看看例子:
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
结果:
id name count(distinct name)
1 a 1
2 b 1
3 c 1
最后一项是多余的,不用管就行了,目的达到。。。。。
group by 必须放在 order by 和 limit之前,不然会报错
发表评论
-
Flex 4中Skin Class外观设计
2011-10-05 22:45 1124Lesson 1 Start Flex 4 默认为Sp ... -
Flex4 利用 Blazeds上传文件
2011-10-12 21:53 1227用Flex做业务经常会碰到各种类型的文件上传,如FTP上传 ... -
felx的Alert组件
2011-10-12 21:54 1109Flex中为我们提供 ... -
Flex 3 如何生成swc文件
2011-10-19 22:56 1038... -
Apache POI简介
2011-10-19 22:56 1547Apache POI是操作基于微软的OLE 2 Compoun ... -
使用Spring提供的MailSender异步发送文本邮件
2013-02-21 08:12 1659在工程中经常有发送邮件的任务,如果使用JavaMail来发送邮 ... -
Spring邮件发送
2013-02-21 08:12 883以下是我对spring发送邮件的总结: 分别使用了两种方法: ... -
采用左右值编码来存储无限分级树形结构的数据库表设计
2013-02-21 08:12 1277该设计方案的优点是:只用一条查询语句即可得到某个根节点及其所有 ... -
BIRT Viewer 2.2 参数设置详解
2011-10-04 12:28 0BIRT Viewer 2.2 参数设置详 ... -
BIRT部署并利用API生成PDF
2011-10-04 12:27 0Birt报表设计步骤: 1、下载birt all in one ... -
TOMCAT集群配置
2011-10-04 12:20 0我的运行环境:Windows2003 Server SP4 + ... -
POI中文编码及多工作表输出
2011-10-04 12:06 1165import java.io.FileOutputStream ... -
Linux下Apache与Tomcat整合的简单方法
2011-10-04 12:07 8071、准备,下载需要的文件。这里假定你已经正确安装配置好了JDK ... -
JMX在Tomcat中的应用
2011-10-04 12:07 8670一、 JMX 简单介绍 Tomcat 从 5.0 版本开始 ... -
将多个Tomcat实例应用转为Windows服务
2011-10-04 12:07 1515有使用过Tomcat经验的朋 ... -
Flex和amfphp配置注意事项
2011-10-03 22:54 0使用Remoting的过程中,遇到问题,这里对可能出现问题的地 ... -
web.xml配置总结
2011-10-03 22:50 4352一、关于webAppRootKey的定 ... -
解决多重web应用中webapp. root重用的问题
2011-10-03 22:09 1244当在tomcate中发布多个同根的应用时,容易出现这样异常: ... -
Tomcat 组件配置简介
2011-10-03 22:07 810Tomcat 组件配置简介 ------ 本文部分内容摘自 电 ... -
Tomcat启动分析
2011-10-03 22:01 7201 - Tomcat Server的组成部 ...
相关推荐
根据提供的信息,我们可以总结出...通过以上知识点的介绍,可以了解到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的语法进行数据查询。例如...
- 使用 `DISTINCT` 关键字去除重复记录。 **4.6 计算字段** - **常量字段** - 直接在 `SELECT` 语句中计算常量值。 - **字段间的计算** - 对字段进行加减乘除等运算。 - **数据处理函数** - 使用内置函数如 ...