Oracle Distinct子句

在本教程中,将学习如何使用Oracle SELECT DISTINCT语句从表中查询不同的数据。

Oracle SELECT DISTINCT语句简介

SELECT语句中使用DISTINCT子句来过滤结果集中的重复行。它确保在SELECT子句中返回指定的一列或多列的值是唯一的。

以下说明了SELECT DISTINCT语句的语法:

SELECT DISTINCT
  column_1
FROM
  table_name;

在上面语法中,table_name表的column_1列中的值将进行比较以过滤重复项。

要根据多列检索唯一数据,只需要在SELECT子句中指定列的列表,如下所示:

SELECT
    DISTINCT column_1,
    column_2,
        ...
FROM
    table_name;

在此语法中,column_1column_2column_n中的值的组合用于确定数据的唯一性。

DISTINCT子句只能在SELECT语句中使用。

请注意,DISTINCT不是SQL标准的UNIQUE的同义词。总是使用DISTINCT而不使用UNIQUE是一个好的习惯。

Oracle DISTINCT示例

下面来看看如何使用SELECT DISTINCT来看看它是如何工作的一些例子。

1. Oracle DISTINCT在一列上应用的例子

查看示例数据库中的联系人(contacts)表:

以下示例检索所有联系人的名字:

SELECT first_name
FROM contacts
ORDER BY first_name;

执行上面查询语句,得到以下结果 -

该查询返回了319行,表示联系人(contacts)表有319行。

要获得唯一的联系人名字,可以将DISTINCT关键字添加到上面的SELECT语句中,如下所示:

SELECT DISTINCT first_name
FROM contacts
ORDER BY first_name;

执行上面查询语句,得到以下结果 -

该查询返回了302行,表示联系人(contacts)表有17行是重复的,它们已经被过滤了。

2. Oracle DISTINCT应用多列示例

看下面的order_items表,表的结构如下:

以下语句从order_items表中选择不同的产品ID和数量:

SELECT
    DISTINCT product_id,
    quantity
FROM
    ORDER_ITEMS
ORDER BY product_id;

执行上面查询语句,得到以下结果 -

在此示例中,product_idquantity列的值都用于评估结果集中行的唯一性。

3. Oracle DISTINCT和NULL

DISTINCTNULL值视为重复值。如果使用SELECT DISTINCT语句从具有多个NULL值的列中查询数据,则结果集只包含一个NULL值。

请参阅示例数据库中的locations表,结构如下所示 -

以下语句从state列中检索具有多个NULL值的数据:

SELECT DISTINCT state
FROM locations
ORDER BY state NULLS FIRST;

执行上面示例代码,得到以下结果 -

正如上图所看到的,只返回一个NULL值。

在本教程中,您已学习如何使用SELECT DISTINCT语句来获取基于一列或多列的过滤获取唯一数据。

原文地址:https://www.cnblogs.com/youseiraws/p/8600391.html

时间: 2024-10-29 15:50:25

Oracle Distinct子句的相关文章

Oracle In子句

Oracle In子句 作者:初生不惑 Oracle基础 评论:0 条 Oracle技术QQ群:175248146 在本教程中,您将学习如何使用Oracle IN运算符来确定值是否与列表或子查询中的任何值相匹配. Oracle IN操作符介绍 Oracle IN运算符确定值是否匹配列表或子查询中的任何值. 注:子查询是嵌套在另一个查询中的查询,可通过在子查询教程中了解子查询用法. 确定表达式是否与值列表匹配的Oracle IN运算符的语法如下所示: expression [NOT] IN (v1

Oracle DISTINCT A 排序问题(转)

请问Oracle 中有ID,A栏要怎么读出栏的不重复值,并且用ID来排序,請大家帮帮忙? 解决方案: ID | A 1 | x 2 | y 3 | x A栏的不重复值: x, y 但用ID來排序时 x 的 ID 应用 1 or 3 所以Oracle 不接受 select distinct A from table order by ID 可以试试 group by 例 以最小ID值排序 SELECT A FROM table GROUP BY A ORDER BY MIN(ID) 原理解释,由于

Oracle Or子句

在本教程中,我们来学习如何使用Oracle OR运算符来组合两个或更多的布尔表达式. Oracle OR运算符介绍 OR运算符是一个逻辑运算符,它组合了布尔表达式,如果其中一个表达式为真(true),则返回true. 以下说明OR运算符的语法: expression_1 AND expression_2 下表显示了OR运算符在true,false和NULL值之间的结果. 值 TRUE FALSE NULL TRUE TRUE TRUE TRUE FALSE TRUE FALSE NULL NUL

Oracle And子句

在本教程中,将学习如何使用Oracle AND运算符来组合两个或更多的布尔表达式. Oracle AND运算符介绍 AND运算符是一个逻辑运算符,它组合了布尔表达式,如果两个表达式都为真,则返回true. 如果其中一个表达式为假,则AND运算符返回false. AND运算符的语法如下所示: expression_1 AND expression_2 下表说明了使用AND运算符合并true,false和NULL值时的结果 - 值 TRUE FALSE NULL TRUE TRUE FALSE NU

Oracle Like子句

在本教程中,您将学习如何使用Oracle LIKE运算符来测试列中的值是否与指定的模式匹配. Oracle LIKE运算符介绍 有时候,想根据指定的模式来查询数据. 例如,您可能希望查找姓氏以St开头或姓氏以er结尾的联系人.在这种情况下,可使用Oracle LIKE运算符. Oracle LIKE运算符的语法如下所示: expresion [NOT] LIKE pattern [ ESCAPE escape_characters ] 在上面的语法中, expression - 该表达式是一个列

Oracle HAVING子句 - 转

使用 HAVING 子句选择行 HAVING 子句对 GROUP BY 子句设置条件的方式与 WHERE 子句和 SELECT 语句交互的方式类似.WHERE 子句搜索条件在进行分组操作之前应用:而 HAVING 搜索条件在进行分组操作之后应用.HAVING 语法与 WHERE 语法类似,但 HAVING 可以包含聚合函数.HAVING 子句可以引用选择列表中出现的任意项. 下面的查询得到本年度截止到目前的销售额超过 $40,000 的出版商: USE pubs SELECT pub_id, t

oracle Data blocks,Extents,Segments

转载 先看Data blocks(也叫逻辑块,oracle块,页)吧,oracle存储数据都是在这些数据块中,一个数据块是磁盘上数据库物理空间一系列物理字节的组成.    比Data blocks更高一层的逻辑数据块空间是extent,一个extent是由一系列临近的存储信息的数据块组成.    最高一层的逻辑结构是segment,一个segment是同一表空间extents的一个集合.每一个segment有不同的数据结构.如每一个表的数据就存储在自己的data segment,每一个索引存储在

oracle 性能优化--索引总结

索引是建立在表的一列或多个列上的辅助对象,目的是加快訪问表中的数据: Oracle存储索引的数据结构是B*树.位图索引也是如此,仅仅只是是叶子节点不同B*数索引: 索引由根节点.分支节点和叶子节点组成.上级索引块包括下级索引块的索引数据,叶节点包括索引数据和确定行实际位置的rowid. 使用索引的目的: 加快查询速度 降低I/O操作 消除磁盘排序 何时使用索引: 查询返回的记录数 排序表<40% 非排序表 <7% 表的碎片较多(频繁添加.删除) 索引的种类 非唯一索引(最经常使用) 唯一索引

Oracle 优化和性能调整

分析评价Oracle数据库性能主要有数据库吞吐量.数据库用户响应时间两项指标.数据库用户响应时间又可以分为系统服务时间和用户等待时间两项,即:  数据库用户响应时间=系统服务时间+用户等待时间  因此,获得满意的用户响应时间有两个途径:一是减少系统服务时间,即提高数据库的吞吐量:二是减少用户等待时间,即减少用户访问同一数据库资源的冲突率.  数据库性能优化包括如下几个部分:  调整数据结构的设计 这一部分在开发信息系统之前完成,程序员需要考虑是否使用Oracle数据库的分区功能,对于经常访问的数