我构建了一个添加了一些条件语句的查询。它们都工作正常,但当我键入有限制选项时,我只会收到错误。
因此,我将 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/