【问题标题】:LIMIT command in R RODBC and DBI packages returns errorR RODBC 和 DBI 包中的 LIMIT 命令返回错误
【发布时间】:2022-06-15 02:59:58
【问题描述】:

我正在尝试使用 RODBC 包查询 Microsoft SQL 表。 以下查询工作正常:

data<-sqlQuery(dcs, 'SELECT Classification_Code, Country_Code FROM ICP_Submissions.dbo.ICP_Fact WHERE Classification_Code IN (\'EXP\') AND Indicator_Code IN (\'1000000\',\'1100000\') ')  

但是,如果按以下方式添加命令LIMIT 100

data<-sqlQuery(dcs, 'SELECT Classification_Code, Country_Code FROM ICP_Submissions.dbo.ICP_Fact WHERE Classification_Code IN (\'EXP\') AND Indicator_Code IN (\'1000000\',\'1100000\') LIMIT 100')  

我收到以下错误

42000 102 [Microsoft][ODBC SQL Server Driver][SQL Server]Incorrect syntax near 'LIMIT'.

如果我使用包 DBI 的 dbGetQuery 函数,我会收到类似的错误消息。 知道我做错了什么吗?

【问题讨论】:

  • 什么是数据库?它可能需要在LIMIT 子句之前有一个ORDER BY 子句,或者可以使用TOP 来实现。
  • [ODBC SQL Server Driver][SQL Server]: 两个要点:(1) SQL Server 不知道LIMIT,而是使用TOP。将SELECT ... LIMIT 100 更改为SELECT TOP 100 ...。 (2) ODBC 驱动程序很古老,您应该升级,从那时起已经有 很多 的更改/改进。

标签: mysql sql r syntax


【解决方案1】:

由于您使用 SQL Server,因此您需要更改

data<-sqlQuery(dcs, 'SELECT Classification_Code, Country_Code FROM ICP_Submissions.dbo.ICP_Fact WHERE Classification_Code IN (\'EXP\') AND Indicator_Code IN (\'1000000\',\'1100000\') LIMIT 100')

data<-sqlQuery(dcs, 'SELECT TOP 100 Classification_Code, Country_Code FROM ICP_Submissions.dbo.ICP_Fact WHERE Classification_Code IN (\'EXP\') AND Indicator_Code IN (\'1000000\',\'1100000\')')

,因为LIMIT不是SQL Server语法,所以比如MySQL就使用它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-13
    • 1970-01-01
    • 1970-01-01
    • 2021-09-09
    相关资源
    最近更新 更多