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

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 /
+-----------+------------+-------------+
...全文
44 4 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
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输出就可以了啊。

28,409

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧