select top 10 * from table where exists (select top 20 * from table order by pid desc) order by newid()
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'。
SELECT top 20 * FROM ping INNER JOIN dbo.theuser ON theuser.username = ping.username order by pid desc)t order by newid()
sql里比较复杂.
先把20条存在临时表中
可以用sql2005里的rownumber 虚以一个1to 20的autoid字段
然后写一个函数.生成10个随机数.如果已存在,则重新生成.直到10个ID都是不重复的.
然后再临时表里根据autoid取出10条
在关键字 'order' 附近有语法错误。
????????????
注意那个 't'
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'。
——————————————————————————————————————————
A: 你自己在题目中的那个不就有两个username吗?自己的那么查询测试过吗?