大家帮忙看看这段代码有什么问题吗?

zhaominsheng 2006-12-05 09:23:30
Sub CountMsg(SizeCount,MaxSize,ConnStr) '删除超出部分的消息
If SizeCount > MaxSize Then
Dim i
i = SizeCount - MaxSize
Dim Cmd,CmdStr
Set Cmd = Server.CreateObject("adodb.Command")
CmdStr = "delete from message where M_id=(Select top "&i&" M_id from message where Incept='"&Incept&"' order by M_id,isRead desc)"
Cmd.ActiveConnection = ConnStr
Cmd.CommandText = CmdStr
Cmd.Execute()
Response.Write("<Script>alert('系统提示:\n由于您的邮件数超过系统的设定\n系统已将您的部分邮件删除'")
End if
End Sub
...全文
102 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
smartcatiboy 2006-12-05
  • 打赏
  • 举报
回复
where id=(子查询)只能针对一条记录,你的用法where id = (select ...)必须改成where id = (select top 1 id.....);所以用in。

先查处合法的topxx条邮件,然后把Not in 合法邮件的条目全部删掉:
delete from message where M_id NOT IN (select Top 合法数目 M_id from message )

zhaominsheng 2006-12-05
  • 打赏
  • 举报
回复
谢谢,已经解决了
zhaominsheng 2006-12-05
  • 打赏
  • 举报
回复
这里吗?可是我在查询分析器里看过的,这里没问题的呀
你的意思是不是
CmdStr = "delete from message where M_id In(Select top "&i&" M_id from message where Incept='"&Incept&"' order by M_id,isRead desc)"
smartcatiboy 2006-12-05
  • 打赏
  • 举报
回复
delete from message where M_id NOT IN .....

28,404

社区成员

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

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