直接上代码吧,两段sql,sql语句的有些where条件被我删除掉了,不然解释起来太麻烦。
问题就是:注意两段sql绿色的部分,用这个 o 和不用 o 的不用点在哪里?查询结果不一样又是为什么?能讲解一下原理最好,谢谢大家!
一:子查询里面使用 o.UserID,查询结果只有一条.
select o.id Id, c.name CompanyName , u.phone Phone , o.TotalPrice TotalPrice from [order] o left join [dbo].[CompanyInfo] c on o.userid=c.id left join [dbo].[user] u on o.userid=u.id where o.[ID] in ( select top (10) id from ( select id,ROW_NUMBER() over(order by id desc) r from [order] where o.UserID=83863 and TotalPrice>0 ) t where t.r> (0))
二:子查询里面直接使用 UserID,查询结果不止10条
select o.id Id, c.name CompanyName , u.phone Phone , o.TotalPrice TotalPrice from [order] o left join [dbo].[CompanyInfo] c on o.userid=c.id left join [dbo].[user] u on o.userid=u.id where o.[ID] in ( select top (10) id from ( select id,ROW_NUMBER() over(order by id desc) r from [order] where UserID=83863 and TotalPrice>0 ) t where t.r> (0))
翻阅古今
肥皂起泡泡
Qyouu
米脂
繁华开满天机
开满天机
MM们
慕尼黑8549860
婷婷同学_
小怪兽爱吃肉
相关分类