Oracle―distinct的用法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Oracle―distinct的用法相关的知识,希望对你有一定的参考价值。

我的库是Oracle:
Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - 64bit Production
PL/SQL Release 11.2.0.1.0 - Production
"CORE 11.2.0.1.0 Production"
TNS for 64-bit Windows: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

我有一个A表,里面有70个字段,但是我要根据一个编号ID(非主键ID)去重,然后得到所有的列的数据。
网上面找了好多资料不知道就是在我这里执行不了。
select *, count(distinct 编号ID) from A group by 编号ID
这个SQL我也执行了,但是也是执行不了,提示未找到from关键字
求解答

参考技术A

以三个字段举例

select id,max(字段1),max(字段2),max(字段3) from A group by id

70多个字段也只能这样类似的写下去,当然max可以改成min

本回答被提问者采纳
参考技术B 你的sql错误
select distinct(id) from a; #查看不重复的ID
select count(distinct(id)) from a; #统计不重复的ID
参考技术C 你这个正确的写法应该是:
select a.*, count(distinct a.编号ID) from A a group by a.编号ID;

但是这个语句应该得不到你要的结果,
参考技术D

Oracle Distinc子句

SELECT DISTINCT可以用来过滤结果集中的重复行,确保SELECT子句中返回指定的一列或多列的值是唯一的。本文将为大家带来SELECT DISTINCT的具体用法。

Oracle SELECT DISTINCT用法

SELECT DISTINCT语句的语法如下:SELECT DISTINCT

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

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

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

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

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

教程来源:树懒学堂_一站式数据知识平台_Oracle Distinct 子句

SQL中distinct的用法

SQL中distinct的用法

 

在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。关键词 distinct用于返回唯一不同的值。

表A:

表B:

1.作用于单列

select distinct name from A

执行后结果如下:

2.作用于多列

示例2.1

select distinct name, id from A

执行后结果如下:

实际上是根据name和id两个字段来去重的,这种方式Access和SQL Server同时支持。

示例2.2

select distinct xing, ming from B

返回如下结果:

返回的结果为两行,这说明distinct并非是对xing和ming两列“字符串拼接”后再去重的,而是分别作用于了xing和ming列。

3.COUNT统计

select count(distinct name) from A;	  --表中name去重后的数目, SQL Server支持,而Access不支持

count是不能统计多个字段的,下面的SQL在SQL Server和Access中都无法运行。

select count(distinct name, id) from A;

若想使用,请使用嵌套查询,如下:

select count(*) from (select distinct xing, name from B) AS M;

4.distinct必须放在开头

select id, distinct name from A;   --会提示错误,因为distinct必须放在开头

5.其他

distinct语句中select显示的字段只能是distinct指定的字段,其他字段是不可能出现的。例如,假如表A有“备注”列,如果想获取distinc name,以及对应的“备注”字段,想直接通过distinct是不可能实现的。但可以通过其他方法实现关于SQL Server将一列的多行内容拼接成一行的问题讨论

 

 

转自:http://www.cnblogs.com/rainman/archive/2013/05/03/3058451.html

以上是关于Oracle―distinct的用法的主要内容,如果未能解决你的问题,请参考以下文章

词汇精选:distinct的用法和辨析

distinct用法

关于SQL的distinct 用法

oracle distinct 优化

distinct去重多个字段

unique 和distinct 的区别