以文本方式查看主题

-  智睿软件_技术交流论坛  (http://zhirui.net/bbs/index.asp)
--  服务器技术  (http://zhirui.net/bbs/list.asp?boardid=34)
----  精典语言:sql语句实现重复数据只显示一次  (http://zhirui.net/bbs/dispbbs.asp?boardid=34&id=3285)

--  作者:zhirui
--  发布时间:2013-06-18 10:57:26
--  精典语言:sql语句实现重复数据只显示一次

大家首先会想到: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


--  作者:zhirui
--  发布时间: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)"


--  作者:zhirui
--  发布时间: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)) "

 

 

自查研究代码!