用了distinct了,但是还是有重复的记录,怎么回事呢
如题 问题点数:0、回复次数:11Top
1 楼pengdali()回复于 2003-09-04 13:47:16 得分 0
不可能
但你要注意:distinct 是对select 后所有的列起作用Top
2 楼mjhnet(天涯沦落人)回复于 2003-09-04 13:48:17 得分 0
请将语句列出来,你写的肯定不对Top
3 楼tj_dns(愉快的登山者)回复于 2003-09-04 13:51:16 得分 0
可能是对“重复”理解的不对。Top
4 楼baodi_z(冷冷的太阳)回复于 2003-09-04 13:57:34 得分 0
看看distinct的用法就可以了Top
5 楼hanps()回复于 2003-09-04 14:01:32 得分 0
用distinct 对在它后面所有的列有作用,你把你的语句和数据放让大家看看Top
6 楼king0401(king0401)回复于 2003-09-04 14:13:22 得分 0
使用 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)
Top
7 楼eminena(俄罗斯方块)回复于 2003-09-04 14:13:23 得分 0
distinct 针对其后所有列起作用.
Top
8 楼happydreamer(www.sz.js.cn,www.gyxk.com)回复于 2003-09-04 14:46:22 得分 0
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就不会Top
9 楼Sorder(要才没才,要貌没貌,你还愿意嫁给我吗)回复于 2003-09-04 16:01:19 得分 0
肯定你搞错了Top
10 楼hillhx(曾经的曾经)回复于 2003-09-04 16:45:53 得分 0
可能是你的数据库中有不能显示的字符,你可以用LEN函数看看你所谓相同的两条数据是不是长度真的一样,我感觉可能是搀杂了脏字符比如 回车、TAB等,如果真的用了DISTINCT仍然有相同数据,我感觉只可能是看上去相同,实际两个数据并不相同Top
11 楼hillhx(曾经的曾经)回复于 2003-09-04 16:54:26 得分 0
你执行以下的例子 就明白了,我加了“回车”脏字符
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 tranTop



