我已经构建了一个添加了一些条件语句的查询。它们都工作正常,但当我输入限制选项时,我只会出错。
所以我使用Gorm和Gin框架去1.10。这是我目前的工作代码,
qb := myDB.Table("table").Select("xx, xxx, xxx, xxx")
rows, err := qb.Rows()
if err != nil {
fmt.Println(err)
}
defer myDB.Close()
return rows
这一切都有效,但是当我在任何地方添加限制时,例如在桌子之前或之后,我尝试了两种但是并没有真正认为它有所作为?例如,
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代码库中。
答案 0 :(得分:1)
您需要Order By
在发送到SQL Server的生成的SQL中使用OFFSET + FETCH,这将由您的ORM添加
......必须满足以下条件:
...
ORDER BY子句包含一列或一组列 保证是独一无二的。
GORM如何做到,我不知道
答案 1 :(得分:0)
我发布这个作为答案,我正在招待更多的工作,如果不出于任何原因不推荐,请告诉我。
我的工作解决方案,
qb := myDB.Table("table").Select("TOP(?) xx, xxx, xxx, xxx", 3)
由于
答案 2 :(得分:0)
我面临类似的问题。通过添加.Order这样工作:
{{1}}