【问题标题】:sql order by not working in classic asp loop通过不在经典的asp循环中工作的sql顺序
【发布时间】:2011-11-23 22:17:51
【问题描述】:

我有一个按 id 对行进行排序的 sql 查询,但是在经典 asp 中它似乎没有按顺序输出数据:

sSQL = "SELECT * FROM a ORDER BY ID DESC"
Set RS = ConnStr.Execute(sSQL)

<% DO WHILE NOT RS.EOF %> <td>
<br><p class='h1'>
<%=RS("ID")%>-
<%=RS("Title")%></p>
<% RS.MoveNext

Loop %> 

数据库:

ID  Title
1    car
2    tree
3    dog

错误的asp输出:

ID 
2
3
1

【问题讨论】:

  • 你怎么知道的?您没有输出 ID...
  • 我正在对照数据库检查它。你是说它应该是正确的?
  • 他说你只列出Title,而不是ID。不清楚你是怎么知道记录集不是按ID排序的。
  • 更新了它以显示输出。我也在我的脚本中测试过,ID的输出不正确。
  • 真的有一个名为“a”的表,它的Id,Title就是这样?如果没有,我建议您创建一个并复制它。如果不能,请发布 ACTUAL SQL 和 ACTUAL 输出。

标签: html sql asp-classic vbscript while-loop


【解决方案1】:

我的 StackOverflowers 同事,请允许我对 OP 上下文进行理论化。这是在黑暗中拍摄的,有一点经验。考虑这个数据结构:

declare  @mytable table (ID varchar(5))

insert into @mytable (ID) values
(' 1'), ('2'), (' 3')

select * from @mytable
order by ID desc

注意 1 和 3 之前的空格。结果:

ID
2
 3
 1

由于浏览器不会在视觉上呈现空白,OP 可能看不到它们,但它们可能存在于 HTML 中。

这是我能想到的唯一方法 ORDER BY &lt;field&gt; DESC 会“显然失败”。

【讨论】:

    【解决方案2】:

    想通了。但不确定它为什么起作用。我有一个开放的

    < td >
    

    我从未在循环中关闭的标签。为什么会导致订单关闭?

    【讨论】:

    • 如果您还有其他问题,请随时提出。既然你解决了你的问题,你应该将此答案标记为正确。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-28
    • 2010-11-28
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多