无法绑定由多个部分组成的标识符。
- SQL code
select q.Id,q.Titlefrom (select q.Id,q.Title,ROW_NUMBER() over(order by q.PostTime desc) as row from Question q inner join Answer a on q.BestAnswerId=a.Id) a where row between 1 and 5
提示错误:
消息 4104,级别 16,状态 1,第 1 行
无法绑定由多个部分组成的标识符 "q.Id"。
消息 4104,级别 16,状态 1,第 1 行
无法绑定由多个部分组成的标识符 "q.Title"。
改成这样就可以了
- SQL code
select Id,Titlefrom (select q.Id,q.Title,ROW_NUMBER() over(order by q.PostTime desc) as row from Question q inner join Answer a on q.BestAnswerId=a.Id) a where row between 1 and 5
这是什么原因呢。
[解决办法]
- SQL code
select q.Id,q.Titlefrom (select q.Id,q.Title,ROW_NUMBER() over(order by q.PostTime desc) as row from Question q inner join Answer a on q.BestAnswerId=a.Id) a --这里起的别名是 q,上方select 用的是qwhere row between 1 and 5
[解决办法]
作为外表的a表,没有必要用q.id,q表是内表,你在外面也访问不到得。
[解决办法]
子查询在里面能用外面的别名。但不能在外面用子查询里面的别名
例
- SQL code
select * from tb1 awhere not exists(select * from tb2 b join b.id=a.id)--子查询在里面能用外面的别名。select * from a on a.id=b.id