智睿软件_技术交流论坛综合站长服务器技术 → 精典语言:sql语句实现重复数据只显示一次


  共有20779人关注过本帖树形打印

主题:精典语言:sql语句实现重复数据只显示一次

帅哥哟,离线,有人找我吗?
zhirui
  1楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:520 积分:8740 威望:0 精华:5 注册:2009-07-07
精典语言:sql语句实现重复数据只显示一次  发帖心情 Post By:2013-06-18 10:57:26

大家首先会想到:distinct。有如下数据表A:

id    title      grief

1    标题1  简介1 
2    标题2  简介2 
3    标题1  简介3 
4    标题2  简介2

对于title字段,若实现重复数据只显示一条,可用如下sql语句:

select distinct title from A 

但这样返回的只有一个title字段。

 

扩展:


如果要实现title字段重复数据只显示一条,并且要返回多个字段,使用distinct就不行了。以下sql语句解决以上问题。
select  *  from A where id in (select min(id) from course group by title)  
(这里min也可以改为max)
对于数据表重复数据只保留一条,以下sql语句可实现。
delete A where   id   not   in( select   max(id)   from   A group   by   title )  
(这里max也可以改为min)

 

有关distinct用法:http://www.w3school.com.cn/sql/sql_distinct.asp


考试管理系统,适合中小学校,驾校,技术认证考试 支持(0中立(0反对(0回到顶部
帅哥哟,离线,有人找我吗?
zhirui
  2楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:520 积分:8740 威望:0 精华:5 注册:2009-07-07
  发帖心情 Post By:2013-06-18 10:57:44

文章表:article

主键            标题
ID                Title

题目:Title相同的记录只显示最新的一条

查询语句:
sql = "select max(ID) from [article] group by Title"
注释:以“Title”分组,查询出组内“ID”最大的记录

sqlStr = "select * from [article] where ID in ("&sql&")"
注释:查询出“ID”在(N,N+1)内的记录

连接起来写法:
sqlStr = "select * from [article] where ID in (select max(ID) from [article] group by Title)"


政府公安政府系统,专注于政府媒体,公安公众信息系统 支持(0中立(0反对(0回到顶部
帅哥哟,离线,有人找我吗?
zhirui
  3楼 个性首页 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:管理员 帖子:520 积分:8740 威望:0 精华:5 注册:2009-07-07
  发帖心情 Post By:2013-06-18 10:58:27

  'str="select * from Zhi_rui_g_Sign a where ( not exists (select 1 from Zhi_rui_g_Sign where (a.Unid = Unid) and (id<a.id) ) )  and  a.NewsID="&rs("id")&" "
  'str="select  *  from Zhi_rui_g_Sign where  NewsID="&rs("ID")&" and (ID in (select min(ID) from Zhi_rui_g_Sign group by Unid) )"
  str="SELECT * FROM Zhi_rui_g_Sign WHERE (NewsID = "&rs("id")&") AND (MemName IN (SELECT MAX(memname) FROM [Zhi_rui_g_Sign] GROUP BY Unid)) "

 

 

自查研究代码!


网络投票评选管理系统,投票评选的合作伙伴 支持(0中立(0反对(0回到顶部