diff --git a/app/models/ci/pipeline.rb b/app/models/ci/pipeline.rb
index 2a987bfa87b84b20a2594c3969eb374653ac4c38..6e89b18aee5d8350174821becb26f6a98824f935 100644
--- a/app/models/ci/pipeline.rb
+++ b/app/models/ci/pipeline.rb
@@ -91,11 +91,13 @@ module Ci
     scope :latest, ->(ref = nil) do
       max_id = unscope(:select)
         .select("max(#{quoted_table_name}.id)")
-        .where(ref: ref)
         .group(:ref, :sha)
 
-      relation = ref ? where(ref: ref) : self
-      relation.where(id: max_id)
+      if ref
+        where(ref: ref, id: max_id.where(ref: ref))
+      else
+        where(id: max_id)
+      end
     end
 
     def self.latest_status(ref = nil)