Revert "Count will ignore order by as before (#2307)"

This reverts commit 9aab1f689c.
This commit is contained in:
Lunny Xiao 2023-07-25 20:26:40 +08:00
parent 59b727260d
commit 2e2bcf2458
2 changed files with 14 additions and 22 deletions

View File

@ -125,11 +125,6 @@ func TestWithTableName(t *testing.T) {
total, err = testEngine.OrderBy("count(`id`) desc").Count(CountWithTableName{}) total, err = testEngine.OrderBy("count(`id`) desc").Count(CountWithTableName{})
assert.NoError(t, err) assert.NoError(t, err)
assert.EqualValues(t, 2, total) assert.EqualValues(t, 2, total)
// the orderby will be ignored by count because some databases will return errors if the orderby columns not in group by
total, err = testEngine.OrderBy("`name`").Count(CountWithTableName{})
assert.NoError(t, err)
assert.EqualValues(t, 2, total)
} }
func TestCountWithSelectCols(t *testing.T) { func TestCountWithSelectCols(t *testing.T) {

View File

@ -35,7 +35,7 @@ func (statement *Statement) GenQuerySQL(sqlOrArgs ...interface{}) (string, []int
} }
buf := builder.NewWriter() buf := builder.NewWriter()
if err := statement.writeSelect(buf, statement.genSelectColumnStr(), true, true); err != nil { if err := statement.writeSelect(buf, statement.genSelectColumnStr(), true); err != nil {
return "", nil, err return "", nil, err
} }
return buf.String(), buf.Args(), nil return buf.String(), buf.Args(), nil
@ -66,7 +66,7 @@ func (statement *Statement) GenSumSQL(bean interface{}, columns ...string) (stri
} }
buf := builder.NewWriter() buf := builder.NewWriter()
if err := statement.writeSelect(buf, strings.Join(sumStrs, ", "), true, true); err != nil { if err := statement.writeSelect(buf, strings.Join(sumStrs, ", "), true); err != nil {
return "", nil, err return "", nil, err
} }
return buf.String(), buf.Args(), nil return buf.String(), buf.Args(), nil
@ -122,7 +122,7 @@ func (statement *Statement) GenGetSQL(bean interface{}) (string, []interface{},
} }
buf := builder.NewWriter() buf := builder.NewWriter()
if err := statement.writeSelect(buf, columnStr, true, true); err != nil { if err := statement.writeSelect(buf, columnStr, true); err != nil {
return "", nil, err return "", nil, err
} }
return buf.String(), buf.Args(), nil return buf.String(), buf.Args(), nil
@ -153,6 +153,12 @@ func (statement *Statement) GenCountSQL(beans ...interface{}) (string, []interfa
selectSQL = "count(*)" selectSQL = "count(*)"
} }
} }
var subQuerySelect string
if statement.GroupByStr != "" {
subQuerySelect = statement.GroupByStr
} else {
subQuerySelect = selectSQL
}
buf := builder.NewWriter() buf := builder.NewWriter()
if statement.GroupByStr != "" { if statement.GroupByStr != "" {
@ -161,14 +167,7 @@ func (statement *Statement) GenCountSQL(beans ...interface{}) (string, []interfa
} }
} }
var subQuerySelect string if err := statement.writeSelect(buf, subQuerySelect, false); err != nil {
if statement.GroupByStr != "" {
subQuerySelect = statement.GroupByStr
} else {
subQuerySelect = selectSQL
}
if err := statement.writeSelect(buf, subQuerySelect, false, false); err != nil {
return "", nil, err return "", nil, err
} }
@ -365,7 +364,7 @@ func (statement *Statement) writeOracleLimit(w *builder.BytesWriter, columnStr s
return err return err
} }
func (statement *Statement) writeSelect(buf *builder.BytesWriter, columnStr string, needLimit, needOrderBy bool) error { func (statement *Statement) writeSelect(buf *builder.BytesWriter, columnStr string, needLimit bool) error {
if err := statement.writeSelectColumns(buf, columnStr); err != nil { if err := statement.writeSelectColumns(buf, columnStr); err != nil {
return err return err
} }
@ -381,11 +380,9 @@ func (statement *Statement) writeSelect(buf *builder.BytesWriter, columnStr stri
if err := statement.writeHaving(buf); err != nil { if err := statement.writeHaving(buf); err != nil {
return err return err
} }
if needOrderBy {
if err := statement.writeOrderBys(buf); err != nil { if err := statement.writeOrderBys(buf); err != nil {
return err return err
} }
}
dialect := statement.dialect dialect := statement.dialect
if needLimit { if needLimit {
@ -522,7 +519,7 @@ func (statement *Statement) GenFindSQL(autoCond builder.Cond) (string, []interfa
statement.cond = statement.cond.And(autoCond) statement.cond = statement.cond.And(autoCond)
buf := builder.NewWriter() buf := builder.NewWriter()
if err := statement.writeSelect(buf, statement.genSelectColumnStr(), true, true); err != nil { if err := statement.writeSelect(buf, statement.genSelectColumnStr(), true); err != nil {
return "", nil, err return "", nil, err
} }
return buf.String(), buf.Args(), nil return buf.String(), buf.Args(), nil