SELECT top 10  * FROM ping INNER JOIN dbo.theuser  ON theuser.username = ping.username order by pid desc
我这个语句是显示前10条记录如何修改为
:
查询前20条,随机显示10条出来?谢谢

解决方案 »

  1.   

    select top 10 * from(
    SELECT top 20  * FROM ping INNER JOIN dbo.theuser  ON theuser.username = ping.username order by pid desc)t order by newid()
      

  2.   

    查出20条之后.放在dataset里.再在页面处理. 比较好.
    sql里比较复杂.
    先把20条存在临时表中
    可以用sql2005里的rownumber 虚以一个1to 20的autoid字段
    然后写一个函数.生成10个随机数.如果已存在,则重新生成.直到10个ID都是不重复的.
    然后再临时表里根据autoid取出10条
      

  3.   

    服务器: 消息 156,级别 15,状态 1,行 1
    在关键字 'order' 附近有语法错误。
    ????????????
      

  4.   

    **)t order by **
    注意那个 't' 
      
      

  5.   

    select top 10 * from table where exists (select top 20 * from table order by pid desc) order by newid()
      

  6.   

    select top 10 * from(
    SELECT top 20  * FROM ping INNER JOIN dbo.theuser  ON theuser.username = ping.username order by pid desc)t order by newid()这个好像不对,,,
    服务器: 消息 8156,级别 16,状态 1,行 1
    多次为 't' 指定了列 'username'。
      

  7.   

    Q: 多次为 't' 指定了列 'username'。
    ——————————————————————————————————————————
    A: 你自己在题目中的那个不就有两个username吗?自己的那么查询测试过吗?