语法不是函数

时间:2012-08-31 11:36:05

标签: sql sql-server-2008

这是我的SQL语句:

 N.File_Id = ServerFiles.Id WHERE [...]

'File_Id'以粉色突出显示,无论如何我可以覆盖这个吗?我认为这就是我的SQL没有返回结果集的原因。

由于

修改后的代码:

SELECT 
   N.Id, NLoc.N_Id, Loc.Id as Loc_Id, 
   CAST(N.Text AS TEXT) as Text, FilePath, 
   CAST(N.Title AS TEXT) as Title, N.CreatD as RegDate
FROM 
   NLoc 
JOIN N ON NLoc.Not_Id = N.Id 
JOIN Loc ON NLoc.Loc_Id = Loc.Id
JOIN ServerFiles ON N.File_Id = ServerFiles.Id 
WHERE 
    Loc_Id IN (1)

2 个答案:

答案 0 :(得分:1)

试试这个:

SELECT 
    N.Id
    , NLoc.N_Id
    , Loc.Id as Loc_Id
    , CAST(N.Text AS TEXT) as Text
    , FilePath
    , CAST(N.Title AS TEXT) as Title
    , N.CreatD as RegDate 

FROM NLoc 
     JOIN N  ON NLoc.Not_Id=N.Id 
     JOIN Loc ON NLoc.Loc_Id=Loc.Id 
     JOIN ServerFiles ON N.File_Id=ServerFiles.Id 
WHERE Loc.Id = 1

我看到的第一个问题是你不能使用在WHERE语句中的SELECT中定义的别名(因此你不能使用Loc_Id,你必须使用Loc.Id)。

如果这对你有用,或者你仍然收到错误,请告诉我。

我也注意到你使用N.File_Id和N.Id,你确定你的表中有这两列吗?你可以发布你的架构吗?

答案 1 :(得分:0)

将其放在 [] 中,例如 [N]。[File_Id]

SELECT 
N.Id, NLoc.N_Id, 
Loc.Id as Loc_Id, CAST(N.Text AS TEXT) as Text, 
FilePath, CAST(N.Title AS TEXT) as Title,
 N.CreatD as RegDate 

 FROM NLoc 
 JOIN N  ON NLoc.Not_Id=N.Id 
 JOIN Loc ON NLoc.Loc_Id=Loc.Id 
 JOIN ServerFiles ON [N].[File_Id]=ServerFiles.Id 
 WHERE NLoc.Loc_Id IN (1) -- or Loc.Id IN (1)