问一个查询数据库的问题,谢谢!

tuoji 2004-04-10 11:35:50
我有这样的数据表:
+-----------+------------+-------------+
/ attid / userid / lasttime /
+-----------+------------+-------------+
/ 7 / 1 / 1 /
/ 10 / 5 / 2 /
/ 10 / 4 / 3 /
/ 7 / 2 / 4 /
+-----------+------------+-------------+
我的目的是查询按照attid分组,并且按照lasttime排序。我希望的查询结果应该如下:
+-----------+------------+-------------+
/ attid / userid / lasttime /
+-----------+------------+-------------+
/ 7 / 2 / 4 /
/ 10 / 4 / 3 /
+-----------+------------+-------------+
简单点就是这个意思:
如果有多条attid相同的记录,我只要一条。但我要得这条并不是按照表中记录的顺序的第一条,而是选择lasttime最大的一条。比如:
23 345
23 567
23 120
这样两条记录我只需要中间那条,也就是:
23 567
这条,请问这个SQL语句改如何写?
我是这样写的:
SELECT * FROM tb1 GROUP BY attid ORDER BY lasttime DESC
但查询结果不对,这样得到的查询结果是:
+-----------+------------+-------------+
/ attid / userid / lasttime /
+-----------+------------+-------------+
/ 10 / 5 / 2 /
/ 7 / 1 / 1 /
+-----------+------------+-------------+
...全文
4 点赞 收藏 4
写回复
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
kkkws01 2004-04-10
<%

set adors=server.createobject("adodb.connection")
set adors=server.createobject("adodb.recordset")
sqlstr="SELECT * FROM tb1 GROUP BY attid ORDER BY lasttime DESC"
dsnstr="dsn=moviedb;uid=sa;pwl=;"
adors.open sqlstr,dsnstr,3,1

do while (not adors.eof)

response.write("<table>")
response.write("<tr><td>attid")
response.write("<td>userid")
response.write("<td>lasttime")
response.write("<tr><td>")&adors("attid")
response.write("<td>")&adors("userid")
response.write("<td>")&adors("lasttime")
response.write("</table>")
adors.movenext
exit do
loop
adors.close
set adors=nothing
%>
调试通过,你试试吧。
回复
whghwujx 2004-04-10
呵呵,不错
up
回复
vvfish119 2004-04-10
同意楼上的
回复
kkkws01 2004-04-10
你在SELECT * FROM tb1 GROUP BY attid ORDER BY lasttime DESC后,把指针指向第一条记录,在用response.write输出就可以了啊。
回复
发动态
发帖子
ASP
创建于2007-09-28

2.8w+

社区成员

ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
申请成为版主
社区公告
暂无公告