调试一个Sql语句,记得SqlServer Top有种用法,就是top 100 percent的用法,具体情况忘了,于是google先,结果找到如下一篇:
如下,是内容摘抄:
SQL语句SELECT TOP用法小结
正 文:Set rs = Server.CreateObject ("ADODB.Recordset")
sql="select top 30 * from data where title='"&title1&"' order by id desc"
rs.Open sql,conn,1,3
if rs.eof then
'入库操作
else
'重复,拒绝发布
end if
cf=0 '初始化重复标识为0
Set rs = Server.CreateObject ("ADODB.Recordset")
sql="select top 30 * from data order by id desc"
rs.Open sql,conn,1,3
do while not rs.eof
if rs("title")=title1 and datediff("h",rs("time"),now())<24 then
'标题相同,且在24小时内发帖
cf=1 ''重复标识为1
exit do
end if
rs.movenext
loopif cf=0 then
'入库操作
elseif cf=1 then
'拒绝发布重复信息
end if
“select top n * from TABLE_NAME where id not in (select top n id from TABLE_NAME order by id desc) order by id desc”。 一个小的细节问题,如果不注意的话,有可能拖累整个程序的稳定性、健壮性;当数据量不大的时候,这种影响可能感觉不出来,而当数据量达到一定的程度的时候,比如有100人同时进行插入数据的操作时,系统很有可能假死,iis崩溃掉。而这,不是我希望看到的。
=========================================分割线==========================================
这里讨论这个语句
sql="select top 30 * from data where title='"&title1&"' order by id desc"
有错这是一定的,这个Sql的语义就是取条件集合中的前30。但是看看作者的解决方案,不禁笑了,居然用的是循环。呵呵。
集合的概念学的好一点,也就不会这样了。
我以为,使用 select top 30 * from ( select top 100 percent * from data where title='"&title1&"' order by id desc) 就可以完整解决了。
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】博客园携手 AI 驱动开发工具商 Chat2DB 推出联合终身会员
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步