百度
360搜索
搜狗搜索

select distinct用法,sql语句去重详细介绍

本文目录一览: select distinct用法

不一定要用distinct吧,用了那个问题反而复杂了。假设日期自断为dateField
SELECT MAX(a)
FROM tab
GROUP BY dateField
需要给出另外那个记录日期的字段才能解答
形如:
字段a 日期
test 2011.08.08
test 2011.08.09
test1 2011.08.08
test 2011.08.08
语句:select distinct 字段a,日期 from 表明
SELECT 任意合适的聚合函数(a)
FROM 表
GROUP BY 日期
order by 日期 按升序或降序 得到你想要的最后一个
distinct的只显示一次重复出更的值。
不过这个值出现多少次只显示一次。
select
distinct
字段名1,字段名2
from
表格
order
by
字段名1
distinct
字段名1
意思是只显示一次字段名1显示的是第一次出现的。
最好和order
by
结合使用。可以提高效率。

sql语句的“Select Distinct”是什么意思?

Select Distinct的意思是查找重复的意思,在SQL语句中的作用是过滤结果集中的重复值。
在表中,可能会包含重复值,关键词 DISTINCT 用于返回唯一不同的值,语法为
SELECT DISTINCT 列名称 FROM 表名称。
如果要从 "Company" 列中选取所有的值,我们需要使用 SELECT 语句,语句如下:
SELECT Company FROM Orders
SQL 是一门 ANSI 的标准计算机语言,用来访问和操作数据库系统。SQL 语句用于取回和更新数据库中的数据。SQL 可与数据库程序协同工作,比如 MS Access、DB2、Informix、MS SQL Server、Oracle、Sybase 以及其他数据库系统。

数据库中 DISTINCT 的作用是什么?

SQL SELECT DISTINCT 语句
在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。
关键词 DISTINCT 用于返回唯一不同的值。
语法:
SELECT DISTINCT 列名称 FROM 表名称使用 DISTINCT 关键词
如果要从 "Company" 列中选取所有的值,我们需要使用 SELECT 语句:
SELECT Company FROM Orders"Orders"表:
Company OrderNumber
IBM 3532
W3School 2356
Apple 4698
W3School 6953
结果:
Company
IBM
W3School
Apple
W3School
DISTINCT就是筛选出不重复的记录,像你这里题目的要求:查询成绩表中有成绩的学生的学号?就要用到DISTINCT,因为一个学生会有很多成绩的,假如用SELECT 学号 FROM 成绩表这句的话,就会查询出许多重复的学号,用destinct就会把这些重复的学号去掉。
distinct这个关键字来过滤掉多余的重复记录只保留一条。
去除重复行
SQL数据库中, DISTINCT表示去掉重复的行,作用是针对包含重复值的数据表,用于返回唯一不同的值。语法是SELECT DISTINCT 列名称 FROM 表名称。如果指定了 SELECT DISTINCT,那么 ORDER BY 子句中的项就必须出现在选择列表中,否则会出现错误。
对于 DISTINCT关键字,如果后面有多个字段,则代表着是多条件去重,只有当这几个条件都相同时才算是重复记录。
扩展资料:
用法说明如下:
SELECT DISTINCT 列名称 FROM 表名称使用 DISTINCT 关键词
如果要从 "Company" 列中选取所有的值,需要使用 SELECT 语句:
SELECT Company FROM Orders"Orders"表:
Company OrderNumber
IBM 3532
W3School 2356
Apple 4698
W3School 6953
结果:
Company
IBM
W3School
Apple
W3School
尽管DISTINCT用于过滤重复记录。 但是通常在使用时,仅使用其来返回唯一记录的数量,而不是使用其来返回非重复记录的所有值。 原因是DISTINCT只能通过双循环查询来解决,这无疑将直接影响具有大量数据的站点的效率。

数据库去重distinct怎么用

select distinct * from table;
部分重复的话可以用
select distinct col1,col2 from table;
进阶用法
有些既要显示所有的字段又要筛除重复的可以这样:
select max(col1),max(col2),col3,col4 from table group by col3,col4;

SQL中select语句跟“distinct”这个参数有什么作用

SQL SELECT DISTINCT 语句   在表中,可能会包含重复值。这并不成问题,不过,有时您也许希望仅仅列出不同(distinct)的值。   关键词 DISTINCT 用于返回唯一不同的值。
语法:
  SELECT DISTINCT 列名称 FROM 表名称
distinct 是消除重复。就是指统计一列时重复的值只显示一行
distinct如果紧跟在Select之后, 则: 如果Select结果中出现重复行,则重复行只保留一行
distinct如果出现在集函数中,则统计时重复值只记一次.
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将一列的多行内容拼接成一行的问题讨论

阅读更多 >>>  distinct用法及搭配,distinct用法和短语

sql语句去重 distinct是什么?

distinct用来查询不重复记录的条数,即distinct来返回不重复字段的条数(count(distinct id)),其原因是distinct只能返回他的目标字段,而无法返回其他字段。
对单一一个字段使用distinct去除重复值时,会过滤掉多余重复相同的值,只返回唯一的值。
对多个字段同时使用distinct去除重复值时,distinct字段必须放在第一个字段前面,不能放在其他字段的后面。既distinct必须放在select后面,第一个字段的前面。同时,使用distinct多个字段去除重复数据时,必须满足各行中各列所对应的值都相同才能去除重复值,如果有其中一列的值不相同,那就表示这些数据不是重复的数据,不会过滤掉。
用法注意
1、distinct【查询字段】,必须放在要查询字段的开头,即放在第一个参数。
2、只能在SELECT语句中使用,不能在INSERT,DELETE,UPDATE中使用。
3、DISTINCT表示对后面的所有参数的拼接取不重复的记录,即查出的参数拼接每行记录都是唯一的。
4、不能与all同时使用,默认情况下,查询时返回的就是所有的结果。

sql语句去重

sql 单表/多表查询去除重复记录
单表distinct
多表group by
group by 必须放在 order by 和 limit之前,不然会报错
************************************************************************************
1、查找表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断
select * from people
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)
2、删除表中多余的重复记录,重复记录是根据单个字段(peopleId)来判断,只留有rowid最小的记录
delete from people
where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)
and rowid not in (select min(rowid) from people group by peopleId having count(peopleId )>1)
3、查找表中多余的重复记录(多个字段)
select * from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
4、删除表中多余的重复记录(多个字段),只留有rowid最小的记录
delete from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
5、查找表中多余的重复记录(多个字段),不包含rowid最小的记录
select * from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)
(二)
比方说
在A表中存在一个字段“name”,
而且不同记录之间的“name”值有可能会相同,
现在就是需要查询出在该表中的各记录之间,“name”值存在重复的项;
Select Name,Count(*) From A Group By Name Having Count(*) > 1
如果还查性别也相同大则如下:
Select Name,sex,Count(*) From A Group By Name,sex Having Count(*) > 1
(三)
方法一
declare @max integer,@id integer
declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) >; 1
open cur_rows
fetch cur_rows into @id,@max
while @@fetch_status=0
begin
select @max = @max -1
set rowcount @max
delete from 表名 where 主字段 = @id
fetch cur_rows into @id,@max
end
close cur_rows
set rowcount 0
方法二
"重复记录"有两个意义上的重复记录,一是完全重复的记录,也即所有字段均重复的记录,二是部分关键字段重复的记录,比如Name字段重复,而其他字段不一定重复或都重复可以忽略。
1、对于第一种重复,比较容易解决,使用
select distinct * from tableName
就可以得到无重复记录的结果集。
如果该表需要删除重复的记录(重复记录保留1条),可以按以下方法删除
select distinct * into #Tmp from tableName
drop table tableName
select * into tableName from #Tmp
drop table #Tmp
发生这种重复的原因是表设计不周产生的,增加唯一索引列即可解决。
2、这类重复问题通常要求保留重复记录中的第一条记录,操作方法如下
假设有重复的字段为Name,Address,要求得到这两个字段唯一的结果集
select identity(int,1,1) as autoID, * into #Tmp from tableName
select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID
select * from #Tmp where autoID in(select autoID from #tmp2)
最后一个select即得到了Name,Address不重复的结果集(但多了一个autoID字段,实际写时可以写在select子句中省去此列)
(四)
查询重复
select * from tablename where id in (select id from tablename
group by id
having count(id) > 1
)
3、查找表中多余的重复记录(多个字段)
select * from vitae a
where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
运行会产生问题,where(a.peopleId,a.seq)这样的写发是通不过的!!!
有区别,第二条的意思是删除掉emp表中empno不是最小并且empno不为空的数据。第二条having语句中count(1)是指统计第一列的行数(包含空值)。
删除重复数据嘛?
delete from t t1where rowid not in (select max(rowid) from t t2group by id )
group by 后面填写你判定重复的列名。比如说如果有相同的id 、name、sal就算做重复,那么group by后面加id,name,sal
加上distinct,不过大型项目不建议使用,该关键字非常影响性能!
CREATE TABLE temp AS SELECT * FROM (select distinct *from department) as d;
truncate table department;
insert into department select *from temp;
drop table temp;
sql语句通过DISTINCT关键字去重, 用于返回唯一不同的值。DISTINCT关键字需要搭配SELECT 语句使用,语法为SELECT DISTINCT 列名称 FROM 表名称。如果指定了 SELECT DISTINCT,那么 ORDER BY 子句中的项就必须出现在选择列表中,否则会出现错误。
扩展资料:
distinct这个关键字用来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。其原因是distinct只有用二重循环查询来解决,而这样对于一个数据量非常大的站来说,无疑是会直接影响到效率的。
distinct必须放在开头,distinct语句中select显示的字段只能是distinct指定的字段,其他字段是不可能出现的。

阅读更多 >>>  update select 出来的数据,在SQL里怎么用UPDATE 更新大量SELECT 数据?

在SQL中,SELECT语句的SELECT DISTINCT表示查询结果中

答案:C
假设有这样的表,数据如下:
ID````City
----------------
1`````广东
2`````黑龙江
3`````四川
4`````广东
5`````广东
6`````福建
7`````吉林
8`````黑龙江
select distinct City from 表
查询结果是:
City
----------
广东
黑龙江
四川
福建
吉林
DISTINCT:
省略选择字段中包含重复数据的记录。为了让查询结果包含它们,必须使 SELECT 语句中列举的每个字段值是唯一的。
呵呵,现在你应该知道怎样选择答案了吧!:)))
B DISTINCT 表示相互区分的,是去掉了重复的列的意思。就是没有两行记录是相同的值。
sql 中的 distinct 是去除结果集中的重复记录。
如图数据:
使用distinct 之后的结果:

网站数据信息

"select distinct用法,sql语句去重"浏览人数已经达到17次,如你需要查询该站的相关权重信息,可以点击进入"Chinaz数据" 查询。更多网站价值评估因素如:select distinct用法,sql语句去重的访问速度、搜索引擎收录以及索引量、用户体验等。 要评估一个站的价值,最主要还是需要根据您自身的需求,如网站IP、PV、跳出率等!