注册 登录
编程论坛 SQL Server论坛

sql如何将同时满足两个条件的重复值的记录去掉

opelmk 发布于 2006-12-10 20:21, 5826 次点击

tabelA:

id name postdate ve
1 aaa 2006-6-1 3


2 bbb 2006-6-3 4

3 aaa 2006-6-1 3

4 bbb 2006-6-3 5


用一条SQL语句查出

1 aaa 2006-6-1 3


2 bbb 2006-6-3 4

3 bbb 200-6-3 5
也就是说将同时满足 name postdate 的重复记录去掉


先谢谢

[此贴子已经被作者于2006-12-10 20:36:50编辑过]

13 回复
#2
棉花糖ONE2006-12-10 20:36


create table i(id int identity(1,1),name varchar(20),postdate varchar(20))
insert into i select 'aaa','2006-06-01'
union select 'bbb','2006-06-03'
union select 'aaa','2006-06-01'
union select 'bbb','2006-06-03'
select * from i

select min(id) id ,name,postdate from i group by name,postdate

#3
opelmk2006-12-10 20:44
min(id)

请问这个是什么意思?

俺菜鸟希望高手能乐意作答
#4
opelmk2006-12-10 20:48
sql="select h.ExamTestID,h.ExamTestDate,j.exam_subject,j.BeginTime,j.id from exam_testuser h,Exam_Kc j where h.ExamTestID=j.id group by h.ExamTestID,h.ExamTestDate "

这条是我真正应用的的SQL语句,我想把存在 h.ExamTestID,h.ExamTestDate 都相同的数据去掉,


这样用GROUP BY的话出错


请指教,我应该怎样写?
#5
棉花糖ONE2006-12-10 20:52
因为你选的那些列没有在group by后或者在聚合函数中
#6
opelmk2006-12-10 20:54

可以指教我怎么写吗?

#7
棉花糖ONE2006-12-10 20:55

你把表结构给我

#8
opelmk2006-12-10 21:02
Exam_Kc表

id exam_subject BeginTIME


exam_testuser 表

id ExamTestID ExamTestDate


其中ExamTestID跟Exam_Kc的id是关联的

我查出Exam_Kc表中的exam_subject 并且想将 ExamTestID ExamTestDate 相同的 记录去掉


sql="select h.ExamTestID,h.ExamTestDate,j.exam_subject,j.BeginTime,j.id from exam_testuser h,Exam_Kc j where h.ExamTestID=j.id order by h.ExamTestiD,h.ExamTestdate"


这条是我原来写的,我想的结果是将 h.ExamTestID和h.ExamTestDate 都相同的记录去掉,我应该怎样写?

[此贴子已经被作者于2006-12-10 21:05:07编辑过]

#9
棉花糖ONE2006-12-10 21:10
select exam_subject from Exam_Kc a inner join ( select min(id) ,ExamTestID,ExamTestDate
from exam_testuser group by ExamTestID,ExamTestDate ) b
on b.ExamTestID =a.id
#10
opelmk2006-12-10 21:13
进阶一下
如果我想两个表中除了ID的字段都查出,并且实现

ExamTestID,ExamTestDate 都没有重复的呢?

感谢jinyuzhang对我的作答

[此贴子已经被作者于2006-12-10 21:18:11编辑过]

#11
棉花糖ONE2006-12-10 21:19
select exam_subject ,select后面的改成你要的就可以了
#12
opelmk2006-12-10 21:21

jinyuzhang你刚才的那个SQL语句出现这样的错误

Microsoft OLE DB Provider for SQL Server 错误 '80040e14'
没有为第 1 列(属于 'b')指定列。

/searchscore.asp,行 71



71行为 rs.open sql,conn,3,2

[此贴子已经被作者于2006-12-10 21:23:24编辑过]

#13
棉花糖ONE2006-12-10 21:24
select exam_subject from Exam_Kc a inner join ( select min(id) i ,ExamTestID,ExamTestDate
from exam_testuser group by ExamTestID,ExamTestDate ) b
on b.ExamTestID =a.id
改成这样
#14
opelmk2006-12-10 21:27
非常感谢你的帮助,问题解决了!!

很感谢你的指教

可以留下个QQ做个朋友吗?

[此贴子已经被作者于2006-12-10 21:28:09编辑过]

1