@@ -237,19 +237,35 @@ func (sb *SelectBuilder) BuildWithFlavor(flavor Flavor, initialArg ...interface{
237237 buf := newStringBuilder ()
238238 sb .injection .WriteTo (buf , selectMarkerInit )
239239
240+ oraclePage1 := flavor == Oracle && sb .limit >= 0
241+ oraclePage2 := oraclePage1 && sb .offset > 0
242+
240243 if len (sb .selectCols ) > 0 {
241244 buf .WriteLeadingString ("SELECT " )
242245
243246 if sb .distinct {
244247 buf .WriteString ("DISTINCT " )
245248 }
246249
247- buf .WriteString (strings .Join (sb .selectCols , ", " ))
250+ if oraclePage2 {
251+ var selectCols []string
252+ for i := range sb .selectCols {
253+ cols := strings .SplitN (sb .selectCols [i ], "." , 2 )
254+ if len (cols ) == 1 {
255+ selectCols = append (selectCols , cols [0 ])
256+ } else {
257+ selectCols = append (selectCols , cols [1 ])
258+ }
259+ }
260+ buf .WriteString (strings .Join (selectCols , ", " ))
261+ } else {
262+ buf .WriteString (strings .Join (sb .selectCols , ", " ))
263+ }
248264 }
249265
250266 sb .injection .WriteTo (buf , selectMarkerAfterSelect )
251267
252- if flavor == Oracle && sb . limit >= 0 && sb . offset > 0 {
268+ if oraclePage2 {
253269 if len (sb .selectCols ) > 0 {
254270 buf .WriteLeadingString ("FROM ( SELECT " )
255271
@@ -289,7 +305,7 @@ func (sb *SelectBuilder) BuildWithFlavor(flavor Flavor, initialArg ...interface{
289305 sb .injection .WriteTo (buf , selectMarkerAfterJoin )
290306 }
291307
292- if flavor == Oracle && sb . limit >= 0 {
308+ if oraclePage1 {
293309 upper := sb .limit
294310 if sb .offset >= 0 {
295311 upper += sb .offset
@@ -385,7 +401,7 @@ func (sb *SelectBuilder) BuildWithFlavor(flavor Flavor, initialArg ...interface{
385401 }
386402
387403 case Oracle :
388- if flavor == Oracle && sb . limit >= 0 && sb . offset > 0 {
404+ if oraclePage2 {
389405 buf .WriteString (" ) " )
390406 if len (sb .tables ) > 0 {
391407 buf .WriteString (strings .Join (sb .tables , ", " ))
0 commit comments