diff --git a/dialects/mssql/mssql.go b/dialects/mssql/mssql.go index ad2960ef..7c685c9f 100644 --- a/dialects/mssql/mssql.go +++ b/dialects/mssql/mssql.go @@ -129,16 +129,20 @@ func (s mssql) CurrentDatabase() (name string) { } func (mssql) LimitAndOffsetSQL(limit, offset interface{}) (sql string) { - if limit != nil { - if parsedLimit, err := strconv.ParseInt(fmt.Sprint(limit), 0, 0); err == nil && parsedLimit > 0 { - sql += fmt.Sprintf(" FETCH NEXT %d ROWS ONLY", parsedLimit) - } - } if offset != nil { if parsedOffset, err := strconv.ParseInt(fmt.Sprint(offset), 0, 0); err == nil && parsedOffset > 0 { sql += fmt.Sprintf(" OFFSET %d ROWS", parsedOffset) } } + if limit != nil { + if parsedLimit, err := strconv.ParseInt(fmt.Sprint(limit), 0, 0); err == nil && parsedLimit > 0 { + if sql == "" { + // add default zero offset + sql += " OFFSET 0 ROWS" + } + sql += fmt.Sprintf(" FETCH NEXT %d ROWS ONLY", parsedLimit) + } + } return }