使用 LIMIT 关键字 [closed] 的 SQL Server 查询中的语法错误

Syntax error in SQL Server query with LIMIT keyword [closed]

提问人:Murat Şenel 提问时间:11/10/2022 最后编辑:halferMurat Şenel 更新时间:11/11/2022 访问量:325

问:


这个问题是由错别字或无法再现的问题引起的。虽然类似的问题可能在这里是主题,但这个问题的解决方式不太可能帮助未来的读者。

去年关闭。

我正在尝试运行此查询,但出现错误

关键字“limit”附近的语法错误

SQL查询:

select * 
from messages as msg 
where "+"(SELECT date from messages where date between
 msg.firsttime and msg.lasttime and receiver is null limit 1) 
limit 5

除了“限制”关键字之外,我的错误在哪里。

Select top 5 * 
from messages as msg 
where (
    SELECT top 1 date 
    from messages 
    where date between msg.firsttime and msg.lasttime 
      and receiver is null
) 
sql-server 语法错误

评论

2赞 Thom A 11/10/2022
WHERE "+"(SELECT...没有任何意义;这试图实现什么?此外,T-SQL 中没有运算符/关键字。T-SQL 使用 TOPLIMIT
0赞 Thom A 11/10/2022
这回答了你的问题吗?使用 mssql 的“LIMIT”附近的语法不正确
0赞 Not the famous Martin 11/10/2022
什么是服务器?不同的服务器接受不同的语法。例如,MySQL 和 PostGresql 使用 ,但 MS SQL Server 使用 .我也不确定.你想用它做什么?SELECT ... FROM ... LIMIT xxSELECT TOP xx ... FROM ..."+"(..."+"
1赞 Terry Carmen 11/10/2022
@Larnu是正确的。只是对 SQL 错误的提示:假装服务器是一个非常准确的子服务器。它很快,但并不智能。如果你仔细阅读错误消息,并把它理解为最基本的可能含义,它通常会告诉你出了什么问题。在这种情况下,第一个错误意味着“我不理解 LIMIT 或它前面的内容”。这是因为 LIMIT 是 MySQL/MariaDB 语法,而不是 SQL Server。一旦你用“TOP nnnn”子句替换 LIMIT 来解决这个问题,你可能会发现一个关于“+”的新投诉,这也是无效的。

答:

1赞 Joel Coehoorn 11/10/2022 #1

这里有两个问题。

首先是.LIMIT 不是 ANSI 标准 SQL。它是 MySQL 和 SQLite 中使用的专有扩展。SQL Server 对此 () 有自己的专有扩展,但它也支持使用 OFFSET/FETCH 的实际标准。LIMITSELECT TOP

接下来是条款。此查询在 main 子句中有一个嵌套语句,用于查找值...然后不将其与任何东西进行比较。没有条件操作。您需要对此结果进行某种布尔比较。WHERESELECTWHEREdate

评论

0赞 Murat Şenel 11/10/2022
是的,我当然理解limit关键字。但是 ı 在 where 子句附近没有看到错误
0赞 Ozan Sen 11/11/2022
您需要一个这样的表达式:where date = (Your_Subquery)