select top 10 * from dbo.UserInfo where id not in( select top 10 id from dbo.UserInfo)SQL语句对吗
3个回答
展开全部
还可以用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
这样应该也可以,没测试;总之实现的方式有很多,,,,
展开全部
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)
但是这样写可能执行效率比较慢
(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' 附近有语法错误。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询