|
主题: 关于DISTINCT请教大家
|
悲伤的设计
职务:普通成员
等级:1
金币:1.0
发贴:158
|
#12004/2/14 16:56:10
select DISTINCT a from abc
我有一个表,表名:ABC,字段有id,a,b,c,然后我查询的时候只想把A重复的只显示一条,
于是用DISTINCT a,请问,这样做怎么样才能取出其它字段的值?
比如:DISTINCT a,b 这样一来,就变成了,A和b两个字段重复的只显示一条了
其实我的问题是这样:我要用在首页调用ABC表中的最新的n条信息,然而有一点,
在N条中若碰到A字段相同的则显示最新的那条,其它的不显示
|
悲伤的设计
职务:普通成员
等级:1
金币:1.0
发贴:158
|
#22004/2/14 22:13:22
自已顶一下
|
悲伤的设计
职务:普通成员
等级:1
金币:1.0
发贴:158
|
#32004/2/15 9:23:13
问题已得到解决,但不满意,应该有很简单的解决方法
<%
sql="DBQ="+server.mappath("data.mdb")+";DRIVER={Microsoft Access Driver (*.mdb)};"
set conn=server.createobject("ADODB.CONNECTION")
conn.open sql
set rs=server.createobject("adodb.recordset")
sql="select distinct a from abc GROUP BY a"
rs.open sql,conn,1,1
y=1
for i=1 to rs.recordcount
j=rs("a")
set rss=server.createobject("adodb.recordset")
sqll="select top 1 * from abc where a='"&j&"' order by id desc"
rss.open sqll,conn,1,1
y=y&","&rss("id")
if rs.eof then exit for
rs.movenext
next
y=mid(y,3)
response.write(y)
set rsss=server.createobject("adodb.recordset")
sqlll="select * from abc where id in ("&y&") order by id desc"
rsss.open sqlll,conn,1,1
do while rsss.eof=false
%>
<table width="96%" border="1" cellspacing="0" cellpadding="0">
<tr>
<td><%=rsss("a")%></td>
<td><%=rsss("b")%></td>
<td><%=rsss("c")%></td>
</tr>
</table>
<%
rsss.movenext
loop
rs.close
set rs=nothing
rss.close
set rss=nothing
rsss.close
set rsss=nothing
%>
|
缺缺
职务:管理员
等级:8
金币:41.0
发贴:9620
|
#42004/2/15 22:03:35
SELECT b FROM ABC WHERE id in (SELECT DISTINCT a FORM abc)
|
悲伤的设计
职务:普通成员
等级:1
金币:1.0
发贴:158
|
#52004/2/15 23:00:40
你试过吗?我早就试过了,不行 SELECT DISTINCT a FroM abc 这句语句能找出id吗?
|
悲伤的设计
职务:普通成员
等级:1
金币:1.0
发贴:158
|
#62004/2/15 23:03:39
其实大家如果没做过的话可以研究一下,想想好像很简单但做起来好像不是很容易
|
缺缺
职务:管理员
等级:8
金币:41.0
发贴:9620
|
#72004/2/15 23:10:50
SELECT b FROM ABC WHERE a in (SELECT DISTINCT a FORM abc)
|
悲伤的设计
职务:普通成员
等级:1
金币:1.0
发贴:158
|
#82004/2/16 8:33:52
a in的话不是搞了白搞
|
悲伤的设计
职务:普通成员
等级:1
金币:1.0
发贴:158
|
#92004/2/16 8:36:45
SELECT DISTINCT a FORM abc 出来的比方是:w,t,d 那你如果数据库里w的有五条,这五条不是还是显示出来了吗?我要求的是,五条同样是w的只显示最新的一条 这句早就试过了,不行
|
雨中的太阳
职务:普通成员
等级:1
金币:0.0
发贴:75
|
#102004/2/17 10:41:18
用GROUP BY 吧~~ 如果ID可以决定是不是最新的的话可以这样 select * from abc where id in (select max(id) from abc group by a) 不过一般来讲,ID是自加字段, 也可以决定ID最大的也就是最新的了~ 这样以上代码也就可行~~
|
janlay
职务:管理员
等级:7
金币:28.0
发贴:7244
|
#112004/2/17 10:48:17
用 in 就决定了会取出所有在列表中的记录(不管有没有重复)
如果记录较多,这种查询会需要一定的性能成本。一种变通的办法是将最新数据存储在另一个更新表中,在添加或删除记录时对这个更新表进行维护。
|
悲伤的设计
职务:普通成员
等级:1
金币:1.0
发贴:158
|
#122004/2/19 0:25:32
是可以了,谢谢,但是数据库比较大,效率有些低,我只是写一段网站JS调用程序,程序和数据库我是不能改的,原来就有的,唉
|