SQL问题:如何过滤重复记录

chinagaoxin 2002-05-16 06:12:48
有一个表的结构是这样的

id bookname cbs zz
001 asp大全 清华大学出版社 田正平
002 数据库系统教程 高等教育出版社 周奥英
003 asp大全 清华大学出版社 田正平

现在我想做一个查询,要查找出的字段如下

bookname, cbs, zz

按bookname字段过滤记录,但要显示多个字段

查询的结果应为

bookname cbs zz
asp大全 清华大学出版社 田正平
数据库系统教程 高等教育出版社 周奥英

但是我不知道SQL语句该怎么写法,请大家指导

谢谢!
...全文
807 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
chinagaoxin 2002-05-21
  • 打赏
  • 举报
回复
我式过了
select t1.bookname,t1.zz,t1.cbs from table t1
join ( select min(id) as id,bookname from table
group by bookname ) as t2
on t1.bookname = t2.bookname and t1.id = t2.id
是可以的!
流星尔 2002-05-18
  • 打赏
  • 举报
回复
select * from table group by bookname
snoweagle 2002-05-18
  • 打赏
  • 举报
回复
select bookname,cbs,zz from table group by bookname,cbs,zz
superjj2002 2002-05-17
  • 打赏
  • 举报
回复
select t1.bookname,t1.zz,t1.cbs from table t1
join ( select min(id) as id,bookname from table
group by bookname ) as t2
on t1.bookname = t2.bookname and t1.id = t2.id

这样行吗?
njc_ly 2002-05-17
  • 打赏
  • 举报
回复
select bookname, cbs, zz from tables where bookname in (select DISTINCT bookname from tables )

chinagaoxin 2002-05-17
  • 打赏
  • 举报
回复

SELECT DISTINCT bookname, cbs, zz FROM TABLE 还是不行
它选出的是bookname,cbs,zz三个字段都不同的记录

可能我没有说清楚,我再解释一下:
要选择出的是bookname字段没有重复
只要bookname字段不重复就可以了,其他字段可以重复,但还要显示出cbs,zz两个字段,
也就是说要显示出所有bookname字段不重复的记录的bookname,zz,cbs三个字段
不知到我这样解释您是否明白了
感谢您的回答!
qq:30147174
tigi 2002-05-17
  • 打赏
  • 举报
回复
我觉得你的问题说的不太明白,如果id 是主键的话,有没有可能 叫asp大全的书有两个出版社出呢?我觉得你这样写
select bookname,cbs,zz from table group by bookname,cbs,zz
要好一点。如果你用
select distinct bookname, cbs, zz from table 上述我提到的问题将会被忽略掉。
chinagaoxin 2002-05-17
  • 打赏
  • 举报
回复
用SELECT DISTINCT bookname, cbs, zz FROM TABLE 还是不行
它选出的是bookname,cbs,zz三个字段都不同的记录

可能我没有说清楚,我再解释一下:
要选择出的是bookname字段没有重复
只要bookname字段不重复就可以了,其他字段可以重复,但还要显示出cbs,zz两个字段.
也就是说要显示出所有bookname字段不重复的记录的bookname,zz,cbs三个字段
不知到我这样解释您是否明白了
感谢您的回答!
blackhawk_yps 2002-05-17
  • 打赏
  • 举报
回复
不知道上面的回答怎么样?不过下面的语句已经经过千锤百炼,呵呵。试试吧

select bookname,cbs,zz from table where id in(select min(id) from table group by bookname)
nononono 2002-05-17
  • 打赏
  • 举报
回复
njc_ly(路言)的回答不行,bookname还是会重复。

帖主的要求可以参考luhongjun(过江项羽)的方法。不过,对于表中bookname字段重复的记录的cbs,zz值的意义就要怀疑了。

select bookname, max(cbs) cbs, max(zz) zz from table group group by bookname
keyhappy 2002-05-17
  • 打赏
  • 举报
回复
赞成 njc_ly(路言)的方法
luhongjun 2002-05-16
  • 打赏
  • 举报
回复
更正:
nononono(null,null):的方法可以解决完全重复的问题,如果有若干字段不重复
但还要显示怎么办?
例如上个例子中如果要显示
id bookname cbs zz new_id
(重复的记录时new_id是重复的,但其他的与其他的New_id记录不重复)
并且ID显示最大的值。应该怎样解决。
一般使用
Select Max(id) id ,max(bookname) bookname,max(cbs) cbs ,max(zz) zz ,new_id from table group by new_id
但效率非常低,是否有其他的办法?
这个有些实际的意义。

luhongjun 2002-05-16
  • 打赏
  • 举报
回复
nononono(null,null):的方法可以解决完全重复的问题,如果有若干字段不重复
但还要显示怎么办?
例如上个例子中如果要显示
id bookname cbs zz new_id
(重复的记录new_id,但其他的记录不重复)
并且ID显示最大的值。应该怎样解决。
一般使用
Select Max(id) id ,max(bookname) bookname,max(cbs) cbs ,max(zz) zz ,new_id from table group group by new_id
但效率非常低,是否有其他的办法?
这个有些实际的意义。
weinfo 2002-05-16
  • 打赏
  • 举报
回复
SELECT DISTINCT bookname, cbs, zz FROM TABLE

nononono 2002-05-16
  • 打赏
  • 举报
回复
SELECT DISTINCT bookname, cbs, zz FROM TABLE
webmin 2002-05-16
  • 打赏
  • 举报
回复
select bookname, cbs, zz from tables where id in (select id from tables group by bookname,id )

34,594

社区成员

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

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