源代码是:
</asp:DataList><asp:AccessDataSource ID="AccessDataSource2" runat="server" DataFile="~/App_Data/news.mdb"
                  SelectCommand="SELECT top 1 [news_content], [news_title], [news_id], [newsclass_id] FROM [news_info] ORDER BY [news_hits]">
              </asp:AccessDataSource>
我希望只显示一条,这样写好像不正确,该怎么写啊?不能写成“SELECT top 1”吗?这样写会显示两个哦!

解决方案 »

  1.   

    如果是MSSQL是没问题的.但你的是access数据库.
    排序的列news_hits有重复,并且数据正好重复在分界点上时,
    Access不知道任何取哪几条,于是它就把所有排序列重复的数据也全都带上了。
      

  2.   

    避免它的出现的方法就是给表加上一个标识惟一的字段,比如自动增长的identity字段,然后加进去一起排序SELECT top 1 [news_content], [news_title], [news_id], [newsclass_id] FROM [news_info] ORDER BY [news_hits], [uniq_id]
      

  3.   

    你的问题不在top 1 上,而在order by news hits上,因为点击数最小的且相同的新闻不止一条
      

  4.   

    想了很久,你这样试试,在sql中是完全可以的,access我没试过
    如果你要按点击数排序查找:
    select top 1 * from (SELECT top 1 [news_content], [news_title], [news_id], [newsclass_id] FROM [news_info] ORDER BY [news_hits]) t2 order by news_id
    如果不安点击数排序查找:
    SELECT top 1 [news_content], [news_title], [news_id], [newsclass_id] FROM [news_info] ORDER BY [news_id]
      

  5.   

    避免它的出现的方法就是给表加上一个标识惟一的字段,比如自动增长的identity字段,然后加进去一起排序 SELECT top 1 [news_content], [news_title], [news_id], [newsclass_id] FROM [news_info] ORDER BY [news_hits], [uniq_id]
      

  6.   

    多加一个随机排序SELECT top 1 [news_content], [news_title], [news_id], [newsclass_id] FROM [news_info] ORDER BY [news_hits] desc,newid() asc