select top 10 * from dbo.UserInfo where id not in( select top 10 id from dbo.UserInfo)SQL语句对吗

我想查第11至20条数据,能如何写,以后书写应注意什么?(SQL2005)... 我想查第11至20条数据,
能如何写,
以后书写应注意什么?
(SQL2005)
展开
 我来答
twvampire
2015-01-12 · TA获得超过3620个赞
知道大有可为答主
回答量:3029
采纳率:76%
帮助的人:2968万
展开全部

还可以用not exists,还可以用临时表,,,给出你临时表的方式

select id=identity(int),*  into #tmp from  dbo.UserInfo  

   select * from #tmp where id between 11 and 20
更多追问追答
追问
Msg 8108, Level 16, State 1, Line 2
无法使用 SELECT INTO 语句将标识列添加到表 '#tmp',该表的列 'id' 已继承了标识属性。
追答

你的表里已经有id字段了,将我写的那个id改成sid,

select sid=identity(int),*  into #tmp from  dbo.UserInfo   order by id

 

   select * from #tmp where id between 11 and 20

又想到一种,,,如果是sqlserver数据库,

select *
from
(
select row_number over(order by id) sid,*
from dbo.UserInfo) t1
where  sid between 11 and 20

这样应该也可以,没测试;总之实现的方式有很多,,,,

忘you阁
2015-01-12 · 超过15用户采纳过TA的回答
知道答主
回答量:62
采纳率:0%
帮助的人:34.2万
展开全部
select * from
(select top 20 * from dbo.UserInfo)
where not exists (select 1 from (select top 11 * from dbo.UserInfo) b where a.id = b.id)

这样写才对,你那样写不对

也可以这样写
select top 20 * from dbo.UserInfo
where id not in(select top 11 id from dbo.UserInfo)

但是这样写可能执行效率比较慢
追问
Msg 156, Level 15, State 1, Line 2
关键字 'where' 附近有语法错误。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
丸子爸爸的日常
2015-01-12 · 知道合伙人软件行家
丸子爸爸的日常
知道合伙人软件行家
采纳数:857 获赞数:985
PHP攻城狮,熟悉js,jq,css,html

向TA提问 私信TA
展开全部
你好,这样写
select top 20 * from dbo.UserInfo where id not in( select top 10 id from dbo.UserInfo)
或者通过limit 方式来查询

select * from dbo.UserInfo limit 11,10;

望采纳
追问

 

Msg 102, Level 15, State 1, Line 2
'11' 附近有语法错误。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式