标题:关于distinct的使用
只看楼主
guang2356447
Rank: 2
等 级:论坛游民
帖 子:434
专家分:31
注 册:2007-7-10
结帖率:65.85%
 问题点数:0 回复次数:7 
关于distinct的使用
需求是:我要消除user字段值重复的记录,同时又要得到sex,age,work3个字段的值

select distinct user from t1 能消除重复记录,但只能取一个字段,我现在要同时取sex,age,work这3个字段的值该如何写。

select distinct user,sex,age,work可以取多个字段,但只能消除这4个字段值全部相同的记录

搜索更多相关主题的帖子: distinct 字段 age work user 
2007-10-22 22:55
kucap1
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2007-8-7
得分:0 
顶了!支持啊!路过了!
2007-10-23 09:10
kucap1
Rank: 1
等 级:新手上路
帖 子:22
专家分:0
注 册:2007-8-7
得分:0 
学习了!顶了!支持啊!!
2007-10-23 09:12
madpbpl
Rank: 4
等 级:贵宾
威 望:11
帖 子:2876
专家分:244
注 册:2007-4-5
得分:0 
distinct要求比较严格,这种情况最好用group by来写,work是数据库保留字,最好别用这个命名字段
<!--#include file="conn.asp"-->
<%
Set rs=Server.CreateObject("adodb.recordset")
sql ="select user,min(sex) as sex,min(age) as age,min(work) as [work] from t1 group by user"
rs.open sql,conn,1,1
%>
<%
do while not rs.eof
%>
<%//=rs("id")%>&nbsp;
<%=rs("user")%>&nbsp;
<%=rs("sex")%>&nbsp;
<%=rs("age")%>&nbsp;
<%=rs("work")%>&nbsp;<br>
<%
rs.movenext
loop
%>
2007-10-23 16:40
guang2356447
Rank: 2
等 级:论坛游民
帖 子:434
专家分:31
注 册:2007-7-10
得分:0 
madpbpl
感谢madpbpl


2007-10-23 19:34
caor1987
Rank: 1
等 级:新手上路
帖 子:228
专家分:0
注 册:2006-10-15
得分:0 
select * from t1 a where not exists (select 1 from t1 where user=a.user and id>a.id)
这样应该也可以。
2007-10-24 15:27
威龙嘉少
Rank: 1
等 级:新手上路
帖 子:205
专家分:0
注 册:2007-9-24
得分:0 
不太明白四楼的SQL语句的意思,能解释下吗?
2007-10-24 18:36
madpbpl
Rank: 4
等 级:贵宾
威 望:11
帖 子:2876
专家分:244
注 册:2007-4-5
得分:0 
以下是引用威龙嘉少在2007-10-24 18:36:53的发言:
不太明白四楼的SQL语句的意思,能解释下吗?

主要是sql语句的写法

我们想显示sex、age、work这三个字段的值,但又要对应不同的user(用户),如果使用distinct,只能写成
sql ="select distinct user from t1"
因为对于distinct来说要求比较严格,只能返回一个字段,所以对于多个字段来说不适用。
所以这里采用了group by的方法。

但是如果写成下面这样是不行的
sql ="select user,sex,age,[work] from t1 group by user"
只能写成
sql ="select user,sex,age,[work] from t1 group by user,sex,age,[work]"
这样只有两条记录里的user、sex、age、work全都相等时才被判断为重复记录的
为了避免这种情况,所以采用了以下的写法
sql ="select user,min(sex) as sex,min(age) as age,min(work) as [work] from t1 group by user"



2007-10-24 19:01



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-179927-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.842603 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved