语法不是函数[关闭]
Posted
技术标签:
【中文标题】语法不是函数[关闭]【英文标题】:Syntax is not a function [closed] 【发布时间】:2012-08-31 11:36:05 【问题描述】:这是我的 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)
【问题讨论】:
你能把整个SQL贴出来吗?在这里很难说出你想做什么。 请添加更多信息,例如您的完整 SQL 语句、您想要实现的目标、您已经尝试过的... 那是你的完整 SQL 吗?如果是这样,您缺少 Select 和 From 部分。如果不确定,请确保在 from 语句中定义别名 (N)。 为负面的代表感到高兴。好的会修改的。对不起。 我注意到你使用了 N.File_Id 和 N.Id,你确定你的表中有这两个列吗?您可以发布您的架构吗? 【参考方案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,您确定您的表中有这两个列吗?您可以发布您的架构吗?
【讨论】:
是 NLoc.Loc_Id 还是 Loc.Id 又是一个问题? @NiladriBiswas 因为他加入了这些列,所以两者都将具有相同的值,所以他使用这两者中的哪一个并不重要。 是的..你说得对...我出了点问题..应该退出比赛。屏幕现在...需要严重打破。【参考方案2】:将其放在 [ ] 中,例如 [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)
【讨论】:
您的代码和评论有错误。您不能在同一个括号内使用表名和列,它必须是 [N].[File_Id],但没有必要这样做。此外,您不能在 where 语句中使用 Loc_Id。 抱歉括号错误。我已经更新了。以上是关于语法不是函数[关闭]的主要内容,如果未能解决你的问题,请参考以下文章