社区
MS-SQL Server
帖子详情
用了distinct了,但是还是有重复的记录,怎么回事呢
rbleng
2003-09-04 01:41:19
如题
...全文
627
11
打赏
收藏
用了distinct了,但是还是有重复的记录,怎么回事呢
如题
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
11 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
hillhx
2003-09-04
打赏
举报
回复
你执行以下的例子 就明白了,我加了“回车”脏字符
begin tran
select *
into tbl1
from (
select 'aaa' as a
union all
select 'bbb' as a
union all
select 'ccc' as a
union all
select 'aaa' + CHAR(13) as a
union all
select 'bbb' + char(10) as a ) t1
select * from tbl1
select distinct a from tbl1
select a ,len(a) from tbl1
rollback tran
hillhx
2003-09-04
打赏
举报
回复
可能是你的数据库中有不能显示的字符,你可以用LEN函数看看你所谓相同的两条数据是不是长度真的一样,我感觉可能是搀杂了脏字符比如 回车、TAB等,如果真的用了DISTINCT仍然有相同数据,我感觉只可能是看上去相同,实际两个数据并不相同
Sorder
2003-09-04
打赏
举报
回复
肯定你搞错了
happydreamer
2003-09-04
打赏
举报
回复
create table #t (a int, b int)
insert into #t select 2,2 union all select 2,3 union all select 1,5 union all
select 2,2
select distinct * from #t
a 列会有重复 a,b就不会
eminena
2003-09-04
打赏
举报
回复
distinct 针对其后所有列起作用.
king0401
2003-09-04
打赏
举报
回复
使用 DISTINCT 消除重复项
DISTINCT 关键字可从 SELECT 语句的结果中除去重复的行。如果没有指定 DISTINCT,那么将返回所有行,包括重复的行。例如,如果在 titleauthor 中选择所有作者 ID 时未使用 DISTINCT,那么将会返回下列行(其中包括一些重复的行):
USE pubs
SELECT au_id
FROM titleauthor
下面是结果集:
au_id
-----------
172-32-1176
213-46-8915
213-46-8915
238-95-7766
267-41-2394
267-41-2394
274-80-9391
409-56-7008
427-17-2319
472-27-2349
486-29-1786
486-29-1786
648-92-1872
672-71-3249
712-45-1867
722-51-5454
724-80-9391
724-80-9391
756-30-7391
807-91-6654
846-92-7186
899-46-2035
899-46-2035
998-72-3567
998-72-3567
(25 row(s) affected)
而使用了 DISTINCT 后,就能够除去重复项,而只查看唯一的作者 ID:
USE pubs
SELECT DISTINCT au_id
FROM titleauthor
下面是结果集:
au_id
-----------
172-32-1176
213-46-8915
238-95-7766
267-41-2394
274-80-9391
409-56-7008
427-17-2319
472-27-2349
486-29-1786
648-92-1872
672-71-3249
712-45-1867
722-51-5454
724-80-9391
756-30-7391
807-91-6654
846-92-7186
899-46-2035
998-72-3567
(19 row(s) affected)
hanps
2003-09-04
打赏
举报
回复
用distinct 对在它后面所有的列有作用,你把你的语句和数据放让大家看看
zdleek
2003-09-04
打赏
举报
回复
看看distinct的用法就可以了
愉快的登山者
2003-09-04
打赏
举报
回复
可能是对“重复”理解的不对。
mjhnet
2003-09-04
打赏
举报
回复
请将语句列出来,你写的肯定不对
pengdali
2003-09-04
打赏
举报
回复
不可能
但你要注意:distinct 是对select 后所有的列起作用
用
Distinct
在MySQL中查询多条不
重复
记录
值,绝对的物有所值
用
Distinct
在MySQL中查询多条不
重复
记录
值,绝对的物有所值
数据库管理与应用 5.2.12使用
DISTINCT
关键字过滤
重复
的
记录
.pdf
数据库管理与应用 5.2.12使用
DISTINCT
关键字过滤
重复
的
记录
.pdf 学习资料 复习资料 教学资源
SQL Server数据库基础到精通课程
本课程是陈表达在学习SQL server数据库后做的完整笔记,本课程讲解从最开始的 创建数据库、创建数据表、已经数据的写入、查询、修改更新、删除,字段运算、字段运算统计、分类汇总、数据分析、条件判断,条件筛选及一些常用的SQL数据库语句,变量定义,字段约束、等等,Select 、Where、Top、Group By 、Order By,
Distinct
、Declare等,详细可看图片和课程,本课程带有完整的SQL数据库课程课件,代码有注释解析等等,学习起来简单易懂,易上手直接操作,需要做数据分析,数据统计等工作的朋友们就赶紧学起来了,加油!
oracle sql 去
重复
记录
不用
distinct
如何实现
用
distinct
关键字只能过滤查询字段中所有
记录
相同的(
记录
集相同),而如果要指定一个字段却没有效果,另外
distinct
关键字会排序,效率很低 。 select
distinct
name from t1 能消除
重复
记录
,但只能取一个字段,现在要同时取id,name这2个字段的值。 select
distinct
id,name from t1 可以取多个字段,但只能消除这2个字段值全部相同的
记录
所以用
distinct
达不到想要的效果,用group by 可以解决这个问题。 例如要显示的字段为A、B、C三个,而A字段的内容不能
重复
可以用下面的语句: select A, min(B),mi
解析mysql不
重复
字段值求和
在使用mysql时,有时需要查询出某个字段不
重复
的
记录
,虽然mysql提供有
distinct
这个关键字来过滤掉多余的
重复
记录
只保留一条,但往往只用它来返回不
重复
记录
的条数,而不是用它来返回不重
记录
的所有值。其原因是
distinct
只能返回它的目标字段,而无法返回其它字段,这个问题让我困扰了很久,用
distinct
不能解决的话,我只有用二重循环查询来解决,而这样对于一个数据量非常大的站来说,无疑是会直接影响到效率的。所以我花了很多时间来研究这个问题,网上也查不到解决方案。。下面先来看看例子: table id name 1 a 2 b 3 c 4 c 5 b库结构大概
MS-SQL Server
34,590
社区成员
254,589
社区内容
发帖
与我相关
我的任务
MS-SQL Server
MS-SQL Server相关内容讨论专区
复制链接
扫一扫
分享
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章