现有表news含字段id,title,addtime,content等。我想从最新添加的10条新闻中随机读取3条出来,求解。

解决方案 »

  1.   

    select
      top 3 *
    from
      (select top 10 * from news order by addtime desc)t
    order by newid()
      

  2.   

    select top 3 * from (select top 10 * from news order by id desc) t order by newid()
      

  3.   

    果然是这样,非常感谢。顺便问下这个语句里面的t是什么意思呢
    t相当于一个表别名,t前面那个()里面的内容,是一个子查询,把它查询出的结果,当成一个名字叫:t的表看。like this: select top 3 * from t order by newid()
      

  4.   

    果然是这样,非常感谢。顺便问下这个语句里面的t是什么意思呢
    t相当于一个表别名,t前面那个()里面的内容,是一个子查询,把它查询出的结果,当成一个名字叫:t的表看。like this: select top 3 * from t order by newid()哦。那这个是固定的写法吗,必须用t表示?
      

  5.   

    果然是这样,非常感谢。顺便问下这个语句里面的t是什么意思呢
    t相当于一个表别名,t前面那个()里面的内容,是一个子查询,把它查询出的结果,当成一个名字叫:t的表看。like this: select top 3 * from t order by newid()哦。那这个是固定的写法吗,必须用t表示?
    t只是个别名而已,给那个子查询起个什么名字都行。只要符合SQL SERVER对象命名规范。
    select
      top 3 *
    from
      (select top 10 * from news order by addtime desc) aaa --aaa也行
    order by newid()select
      top 3 *
    from
      (select top 10 * from news order by addtime desc) AS [t name] --[t name]也行.本来这儿有个AS关键字.只不过大家一般写的时候都省略掉了.加个AS会不会更形象些?呵呵
    order by newid()
      

  6.   

    果然是这样,非常感谢。顺便问下这个语句里面的t是什么意思呢
    t相当于一个表别名,t前面那个()里面的内容,是一个子查询,把它查询出的结果,当成一个名字叫:t的表看。like this: select top 3 * from t order by newid()哦。那这个是固定的写法吗,必须用t表示?
    t只是个别名而已,给那个子查询起个什么名字都行。只要符合SQL SERVER对象命名规范。
    select
      top 3 *
    from
      (select top 10 * from news order by addtime desc) aaa --aaa也行
    order by newid()select
      top 3 *
    from
      (select top 10 * from news order by addtime desc) AS [t name] --[t name]也行.本来这儿有个AS关键字.只不过大家一般写的时候都省略掉了.加个AS会不会更形象些?呵呵
    order by newid()明白了,感谢赐教。