SQL server 的SQL语句的问题,为什么两种方法查询,第二种查询出来的结果是错的?
--2、显示第4个到第7个的员工的信息并按入职时间排序selecttop4*fromempwhereempNumnotin(selecttop3empNumfromemp...
--2、显示第4个到第7个的员工的信息并按入职时间排序
select top 4 * from emp where empNum not in(select top 3 empNum from emp) order by hireDate
第一个能查出来,是对的
select * from emp,(select top 3 empNum from emp) tem where emp.empNum not in (tem.empNum) order by hireDate
第二个很多重复,是错误的
求高人解答! 展开
select top 4 * from emp where empNum not in(select top 3 empNum from emp) order by hireDate
第一个能查出来,是对的
select * from emp,(select top 3 empNum from emp) tem where emp.empNum not in (tem.empNum) order by hireDate
第二个很多重复,是错误的
求高人解答! 展开
2个回答
展开全部
emp,(select top 3 empNum from emp) tem你这种表述基本没明确两表之间的关系,所以他们的关系是N*M的关系,写法很多,提供一种写法:
select emp.* from emp WHERE not EXISTS (select top 3 empNum from emp tem WHERE tem.empNum= emp.empNum) order by emp.hireDate
select emp.* from emp WHERE not EXISTS (select top 3 empNum from emp tem WHERE tem.empNum= emp.empNum) order by emp.hireDate
追问
not in 和 not exist是一样的吗?
追答
表达方式不同,你看看sqlserver联机丛书,exists是优化的sql语句表达方式
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询