diff --git a/contrib/drivers/mssql/mssql_z_model_test.go b/contrib/drivers/mssql/mssql_z_model_test.go index 4e1550684..2310493a3 100644 --- a/contrib/drivers/mssql/mssql_z_model_test.go +++ b/contrib/drivers/mssql/mssql_z_model_test.go @@ -2548,3 +2548,40 @@ func Test_Model_WherePrefixLike(t *testing.T) { t.Assert(r[0]["ID"], "3") }) } + +func Test_Model_AllAndCount(t *testing.T) { + table := createInitTable() + defer dropTable(table) + + gtest.C(t, func(t *gtest.T) { + result, total, err := db.Model(table).Order("id").Limit(0, 3).AllAndCount(false) + t.Assert(err, nil) + + t.Assert(len(result), 3) + t.Assert(total, TableSize) + }) +} + +func Test_Model_ScanAndCount(t *testing.T) { + table := createInitTable() + defer dropTable(table) + + gtest.C(t, func(t *gtest.T) { + type User struct { + Id int + Passport string + Password string + NickName string + CreateTime gtime.Time + } + + users := make([]User, 0) + total := 0 + + err := db.Model(table).Order("id").Limit(0, 3).ScanAndCount(&users, &total, false) + t.Assert(err, nil) + + t.Assert(len(users), 3) + t.Assert(total, TableSize) + }) +} diff --git a/database/gdb/gdb_model_select.go b/database/gdb/gdb_model_select.go index de19b8d62..5a37968f7 100644 --- a/database/gdb/gdb_model_select.go +++ b/database/gdb/gdb_model_select.go @@ -768,8 +768,10 @@ func (m *Model) formatCondition( } } // ORDER BY. - if m.orderBy != "" { - conditionExtra += " ORDER BY " + m.orderBy + if !isCountStatement { // The count statement of sqlserver cannot contain the order by statement + if m.orderBy != "" { + conditionExtra += " ORDER BY " + m.orderBy + } } // LIMIT. if !isCountStatement {