【问题标题】:SQL Server Query SELECT Error (now trying LIMIT)SQL Server 查询 SELECT 错误(现在正在尝试 LIMIT)
【发布时间】:2017-02-01 18:38:08
【问题描述】:

我正在研究应该是 SQL Server 2014 的超级简单查询。我要做的就是检查我们的系统是否可以在更新后与 SQL Server 交互等。所以我只需要验证它是否建立了连接正确并在服务器中找到一个表。

尝试 1:

SELECT TOP (1) *
From [X].[dbo].[Y]
WITH (NOLOCK);

但显然 'top' 不是 SQL Server 2014 支持的选项。 要添加更多内容,这是我在尝试运行时遇到的确切错误:语法错误。令牌“顶部”无效。请检查您的运算符的大小写(例如,'or' 与 'OR')并检查您的函数是否在函数名称后使用括号,例如 Now(),例如 Len("abc")。

尝试 2:

SELECT *
From [X].[dbo].[Y]
WITH (NOLOCK)
LIMIT (1);

那个告诉我,我需要将数据项放在 [] 之间,将文本放在“”之间,并将函数作为 FunctionName()。但是...我看不出我错过了其中的任何一个。

任何人都可以解释为什么我的查询没有通过吗?任何帮助将不胜感激。

【问题讨论】:

  • 首先,请不要使用 NOLOCK。这会给您带来意想不到的问题。
  • SQl Server 不支持限制。然而,前 1 名是。我可以在我的 SQL Server 数据库中运行类似于您的查询。您遇到了什么具体错误?
  • 有人告诉我,NOLOCK 在流量很大的服务器上是个好主意。无论如何,从任何一个中删除它都不能解决问题。 McNets,我不能那样尝试,因为我被告知 'top' 是一个无效的令牌。
  • 另外你是如何运行这段代码的?直接来自 SSMS 还是来自某些应用程序代码?
  • HLGEM 它说语法错误。令牌“Top”无效。

标签: sql-server database select


【解决方案1】:

第一次尝试应该可以正常工作:

SELECT TOP (1) *
From [dbo].[Y]
WITH (NOLOCK);

example

如果它不起作用,您应该包含错误消息。

【讨论】:

  • 我用确切的错误信息更新了问题。
  • 对于“[X]”部分,您已经正确指定了数据库名称。 [Y] 必须是 dbo 模式中的有效表名。 1 周围的括号是不必要的。如果你只是在寻找检测,你可以只指定一个列名而不是 *。更好的是,您可以改为在 INFORMATION_SCHEMA.TABLES 视图中测试是否存在。但是我在我自己的数据库上做了一个类似的声明(“SELECT TOP 1 * FROM [dbo].[MyTable]”)并且效果很好。
  • 啊啊啊啊,我就知道是那样的愚蠢!以 pmbAustin 输入的格式进行了尝试,它工作正常。刚刚被顶级错误抛出。谢谢!
  • 将其发布为答案,我会给你打勾。看不到支持 cmets 的选项。
猜你喜欢
  • 2018-07-12
  • 1970-01-01
  • 2023-03-26
  • 2016-03-21
  • 1970-01-01
  • 2012-05-03
  • 2012-08-10
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多