diff --git a/dialect/sql/builder.go b/dialect/sql/builder.go index 43568f013..e9257a02f 100644 --- a/dialect/sql/builder.go +++ b/dialect/sql/builder.go @@ -2824,8 +2824,10 @@ func (s *Selector) Query() (string, []any) { b.Wrap(func(b *Builder) { b.Join(t) }) - b.WriteString(" AS ") - b.Ident(t.as) + if t.as != "" { + b.WriteString(" AS ") + b.Ident(t.as) + } case *WithBuilder: t.SetDialect(s.dialect) b.Ident(t.Name()) diff --git a/dialect/sql/builder_test.go b/dialect/sql/builder_test.go index d49641eb4..7c3b1c3bf 100644 --- a/dialect/sql/builder_test.go +++ b/dialect/sql/builder_test.go @@ -1631,6 +1631,11 @@ WHERE (((("users"."id1" = "users"."id2" AND "users"."id1" <> "users"."id2") AND "users"."id1" > "users"."id2") AND "users"."id1" >= "users"."id2") AND "users"."id1" < "users"."id2") AND "users"."id1" <= "users"."id2"`, "\n", ""), }, + { + input: Select("name"). + From(Select("name", "age").From(Table("users"))), + wantQuery: "SELECT `name` FROM (SELECT `name`, `age` FROM `users`)", + }, } for i, tt := range tests { t.Run(strconv.Itoa(i), func(t *testing.T) {