用了distinct了,但是还是有重复的记录,怎么回事呢

rbleng 2003-09-04 01:41:19
如题
...全文
627 11 打赏 收藏 转发到动态 举报
写回复
用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 后所有的列起作用

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧