首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

无法绑定由多个部分组成的标识符。该怎么处理

2012-01-16 
无法绑定由多个部分组成的标识符。SQL codeselect q.Id,q.Titlefrom (select q.Id,q.Title,ROW_NUMBER() ov

无法绑定由多个部分组成的标识符。

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 

热点排行
Bad Request.