sql-server - MS SQL 限制选项不起作用

标签 sql-server go go-gorm

我构建了一个添加了一些条件语句的查询。它们都工作正常,但当我键入有限制选项时,我只会收到错误。

因此,我将 go 1.10 与 Gorm 和 Gin 框架一起使用。这是我目前的工作代码,

qb := myDB.Table("table").Select("xx, xxx, xxx, xxx")

rows, err := qb.Rows()

if err != nil {
    fmt.Println(err)
}

defer myDB.Close()

return rows

一切正常,但是当我在任何地方添加限制时,例如在餐 table 前或餐 table 后,我都试过了,但真的不觉得这有什么不同吗?例如,

qb := myDB.Table("table").Limit(3).Select("xx, xxx, xxx, xxx")

现在我知道 MS SQL 不使用限制,而是在 select 语句中使用 TOP(如果这不是唯一的用例,请原谅我,仍然没有太多使用 MS SQL)。

我得到的错误是,

mssql: Invalid usage of the option NEXT in the FETCH statement.

现在我在 Gorm 的 GitHub 上找到了以下内容,https://github.com/jinzhu/gorm/issues/1205

他们有变通方法,但对我不起作用。这家伙还发布了一个更新的功能来纠正这个问题。但是,我不确定如何更新第三方库中的代码。这也是在 2016 年发布的,所以不确定该代码是否已经添加到 Gorm 代码库中。

最佳答案

您需要一个 Order By 以在发送到 SQL Server 的生成的 SQL 中使用 OFFSET + FETCH,这将由您的 ORM 添加

...the following conditions must be met:

...

The ORDER BY clause contains a column or combination of columns that are guaranteed to be unique.

GORM是怎么做到的,我不知道

关于sql-server - MS SQL 限制选项不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49429188/

相关文章:

c# - 是什么导致 LINQ to SQL 中超时过期的 SqlExceptions?

sql-server - 查找具有相同订单的客户

为类型 json.RawMessage 调用 MarshalJSON 的 Json 错误

mysql - 决定数据库需求

sql - 在 SQL Server 中选择 N 行

security - 基于 token 的 session 管理

string - 有一个像Linux cut一样工作的Go函数吗?

go - 如何返回我用 Gorm 的 Create() 创建的记录?

go - 扫描到 gorm 模型的结构

sqlite - GORM 关联 .Create()