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关键字
求解答
以三个字段举例
select id,max(字段1),max(字段2),max(字段3) from A group by id70多个字段也只能这样类似的写下去,当然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的用法的主要内容,如果未能解决你的问题,请参考以下文章