求助:关于distinct的问题
一个表中真正只有10条数据
其他的都和这10条是一样的(都是用这10条粘贴复制出来的)
我现在想要把这10条真正的数据取出来,并且每个字段的值都要显示出来
请问:SQL语句应该怎么写
问题点数:20、回复次数:16Top
1 楼tangqijun199(撒旦.冲上了5角还差一个猩猩,继续努力……)回复于 2006-05-04 12:25:16 得分 0
select distinct * from tablenameTop
2 楼SEED_twj(FreeDam)回复于 2006-05-04 12:27:52 得分 0
这样返回的是所有记录
distinct 没有起作用Top
3 楼jwt1982(叛逆者)回复于 2006-05-04 12:29:38 得分 0
select distinct ColA as Col,* from tablenameTop
4 楼SEED_twj(FreeDam)回复于 2006-05-04 12:31:40 得分 0
返回的还是所有记录啊
郁闷。。。。。。。。Top
5 楼SEED_twj(FreeDam)回复于 2006-05-04 12:36:04 得分 0
ColA as Col
这应该只是取了个别名
好像跟查询没有关啊Top
6 楼tangqijun199(撒旦.冲上了5角还差一个猩猩,继续努力……)回复于 2006-05-04 13:01:38 得分 0
select distinct * from tablename
楼主是不是还有什么没有说清楚,我这里都是返回不重复的行。
你再试试
select * from tablename
union
select * from tablename
要不就换:
select col1,col2,max(col3),max(col4),……
from tablename
group by col1,col2
(假设col1,col2是主键)
Top
7 楼torrent2008(微笑)回复于 2006-05-04 13:04:23 得分 0
字段里一定有不同的值,
distinct的结果应该是正确的
有数据记录吗?Top
8 楼SEED_twj(FreeDam)回复于 2006-05-04 13:21:37 得分 0
不对啊
我一共有111条记录
select distinct * from tablename 后
返回的还是111条记录啊
主要是根据 字段 Stu_exam_no 来消重的
select distinct Stu_exam_no from tablename
返回的就是10条记录
不过只有 Stu_exam_no 字段的值
我现在要显示出每个字段的值Top
9 楼chenqianlong(443)回复于 2006-05-04 13:31:37 得分 0
有回車或空格
select distinct replace(replace(replace(col1,char(10),''),char(13),''),' ',''),...
from tableTop
10 楼SEED_twj(FreeDam)回复于 2006-05-04 13:34:42 得分 0
看不懂
什么意思
可以解释一下么?Top
11 楼SEED_twj(FreeDam)回复于 2006-05-04 19:36:49 得分 0
如果
select distinct * from tablename
distinct根本就没有起到作用
Top
12 楼SEED_twj(FreeDam)回复于 2006-05-04 21:31:59 得分 0
表结构
create table Notice_temp
(
Notice_temp_id int identity(1,1) primary key, --主键,自动编号
Stu_name nvarchar(20), --学生姓名
Stu_sex nvarchar(3), --学生性别
Stu_exam_no nvarchar(20), --准考证号
Stu_ID_card nvarchar(20), --身份证号
Stu_area nvarchar(20), --学生所在地区
Stu_school_name nvarchar(50), --学生所在高中
Stu_subject nvarchar(10), --文理科
Stu_exam_score int, --高考分数
Stu_address nvarchar(100), --家庭地址
Stu_post_code int, --邮编
Stu_phone nvarchar(15), --联系电话
Stu_linkman nvarchar(10), --联系人
Remark nvarchar(10) --判断是应届还是往届生
)
要求
查询出Stu_exam_no不重复的所有记录,其他字段(除Notice_temp_id)都可以重复
测试数据:
1 张三 男 123 456 武汉 华师一 理科 100 武汉武昌 430000 027-12345678 张三 应届生
2 李四 男 123 456 武汉 华师二 理科 200 武汉武昌 430000 027-12345678 李四 应届生
3 王五 男 234 456 武汉 华师三 理科 300 武汉武昌 430000 027-12345678 王五 应届生
4 张三 男 345 456 武汉 华师四 理科 400 武汉武昌 430000 027-12345678 张三 应届生
查询结果:
1 张三 男 123 456 武汉 华师一 理科 100 武汉武昌 430000 027-12345678 张三 应届生
3 王五 男 234 456 武汉 华师三 理科 300 武汉武昌 430000 027-12345678 王五 应届生
4 张三 男 345 456 武汉 华师四 理科 400 武汉武昌 430000 027-12345678 张三 应届生Top
13 楼jwt1982(叛逆者)回复于 2006-05-05 07:55:47 得分 0
2 李四 男 123 456 武汉 华师二 理科 200 武汉武昌 430000 027-12345678 李四 应届生
这条记录为什么不显示????什么理由?根据什么条件?Top
14 楼paoluo(一天到晚游泳的鱼)回复于 2006-05-05 08:31:08 得分 0
Select A.*
from Notice_temp A
Inner Join(Select Min(Notice_temp_id) As Notice_temp_id,Stu_exam_no from Notice_temp Group By Stu_exam_no) B
On A.Notice_temp_id=B.Notice_temp_id And A.Stu_exam_no=B.Stu_exam_noTop
15 楼paoluo(一天到晚游泳的鱼)回复于 2006-05-05 08:36:38 得分 20
Or
Select * from Notice_temp
Where Notice_temp_id In (Select Min(Notice_temp_id) As Notice_temp_id from Notice_temp Group By Stu_exam_no)
Top
16 楼SEED_twj(FreeDam)回复于 2006-05-05 10:31:08 得分 0
牛人
真是太感谢了
最后问一个,这2条语句在执行速度上,哪个快一些?Top




