diff --git a/src/metabase/lib/stage.cljc b/src/metabase/lib/stage.cljc
index 1d659d394d23d194c4a112404bcb48370b8d7d13..e0ce4031361a3a9e2b6e1c14e7ac1b106cea2895 100644
--- a/src/metabase/lib/stage.cljc
+++ b/src/metabase/lib/stage.cljc
@@ -107,7 +107,7 @@
               :lib/source-column-alias  (lib.metadata.calculation/column-name query stage-number metadata)
               :lib/desired-column-alias (unique-name-fn (lib.field/desired-alias query metadata)))))))
 
-(mu/defn ^:private summary-columns :- [:maybe lib.metadata.calculation/ColumnsWithUniqueAliases]
+(mu/defn ^:private breakout-ags-fields-columns :- [:maybe lib.metadata.calculation/ColumnsWithUniqueAliases]
   [query          :- ::lib.schema/query
    stage-number   :- :int
    unique-name-fn :- fn?]
@@ -116,7 +116,8 @@
          (mapcat (fn [f]
                    (f query stage-number unique-name-fn)))
          [breakouts-columns
-          aggregations-columns])))
+          aggregations-columns
+          fields-columns])))
 
 (mu/defn ^:private previous-stage-metadata :- [:maybe lib.metadata.calculation/ColumnsWithUniqueAliases]
   "Metadata for the previous stage, if there is one."
@@ -210,9 +211,8 @@
 
 (mu/defn ^:private stage-metadata :- [:maybe lib.metadata.calculation/ColumnsWithUniqueAliases]
   "Return results metadata about the expected columns in an MBQL query stage. If the query has
-  aggregations/breakouts, then return those and the fields columns.
-  Otherwise if there are fields columns return those and the joined columns.
-  Otherwise return the defaults based on the source Table or previous stage + joins."
+  aggregations/breakouts/fields, then return THOSE. Otherwise return the defaults based on the source Table or
+  previous stage + joins."
   ([query stage-number]
    (stage-metadata query stage-number (lib.util/unique-name-generator)))
 
@@ -221,23 +221,11 @@
     unique-name-fn :- fn?]
    (or
     (existing-stage-metadata query stage-number)
-    (let [query (ensure-previous-stages-have-metadata query stage-number)
-          summary-cols (summary-columns query stage-number unique-name-fn)
-          field-cols (fields-columns query stage-number unique-name-fn)]
+    (let [query (ensure-previous-stages-have-metadata query stage-number)]
       ;; ... then calculate metadata for this stage
-      (cond
-        summary-cols
-        (into summary-cols field-cols)
-
-        field-cols
-        (do (doall field-cols)          ; force generation of unique names before join columns
-            (into []
-                  (m/distinct-by #(dissoc % :source_alias :lib/source :lib/desired-column-alias))
-                  (concat field-cols
-                          (lib.join/all-joins-default-columns query stage-number unique-name-fn))))
-
-        :else
-        (lib.metadata.calculation/default-columns query stage-number (lib.util/query-stage query stage-number) unique-name-fn))))))
+      (or
+       (breakout-ags-fields-columns query stage-number unique-name-fn)
+       (lib.metadata.calculation/default-columns query stage-number (lib.util/query-stage query stage-number) unique-name-fn))))))
 
 (defmethod lib.metadata.calculation/metadata-method ::stage
   [query stage-number _stage]
diff --git a/test/metabase/lib/join_test.cljc b/test/metabase/lib/join_test.cljc
index 78a47ab7a351589d94043678d9a43a91c50266cf..0e346d98bacb229a713d6f626cc088d8987aab3f 100644
--- a/test/metabase/lib/join_test.cljc
+++ b/test/metabase/lib/join_test.cljc
@@ -214,12 +214,7 @@
               :lib/source-column-alias       "ID"
               :lib/desired-column-alias      "Cat__ID"
               :metabase.lib.field/join-alias "Cat"
-              :lib/source                    :source/fields}
-             {:name                          "NAME"
-              :lib/source-column-alias       "NAME"
-              :lib/desired-column-alias      "Cat__NAME"
-              :metabase.lib.field/join-alias "Cat"
-              :lib/source                    :source/joins}]
+              :lib/source                    :source/fields}]
             (lib.metadata.calculation/metadata query)))
     (testing "Introduce a new stage"
       (let [query' (lib/append-stage query)]
@@ -230,10 +225,6 @@
                  {:name                          "ID"
                   :lib/source-column-alias       "Cat__ID"
                   :lib/desired-column-alias      "Cat__ID"
-                  :lib/source                    :source/previous-stage}
-                 {:name                          "NAME"
-                  :lib/source-column-alias       "Cat__NAME"
-                  :lib/desired-column-alias      "Cat__NAME"
                   :lib/source                    :source/previous-stage}]
                 (lib.metadata.calculation/metadata query')))))))
 
diff --git a/test/metabase/lib/order_by_test.cljc b/test/metabase/lib/order_by_test.cljc
index f86cd9333955c62186389915e057764a5d502b8c..00e8563fca90711729d9ef69d8918a7cfd100bce 100644
--- a/test/metabase/lib/order_by_test.cljc
+++ b/test/metabase/lib/order_by_test.cljc
@@ -473,23 +473,13 @@
               :display-name             "ID"
               :table-id                 (meta/id :categories)
               :lib/source-column-alias  "Cat__ID"
-              :lib/desired-column-alias "Cat__ID"}
-             {:id                       (meta/id :categories :name)
-              :name                     "NAME"
-              :lib/source               :source/previous-stage
-              :lib/type                 :metadata/field
-              :base-type                :type/Text
-              :effective-type           :type/Text
-              :display-name             "Name"
-              :table-id                 (meta/id :categories)
-              :lib/source-column-alias  "Cat__NAME"
-              :lib/desired-column-alias "Cat__NAME"}]
+              :lib/desired-column-alias "Cat__ID"}]
             (-> (lib/query-for-table-name meta/metadata-provider "VENUES")
                 (lib/join (-> (lib/join-clause
-                               (meta/table-metadata :categories)
-                               [(lib/=
-                                 (lib/field "VENUES" "CATEGORY_ID")
-                                 (lib/with-join-alias (lib/field "CATEGORIES" "ID") "Cat"))])
+                                (meta/table-metadata :categories)
+                                [(lib/=
+                                   (lib/field "VENUES" "CATEGORY_ID")
+                                   (lib/with-join-alias (lib/field "CATEGORIES" "ID") "Cat"))])
                               (lib/with-join-alias "Cat")
                               (lib/with-join-fields :all)))
                 (lib/with-fields [(lib/field "VENUES" "ID")
diff --git a/test/metabase/lib/stage_test.cljc b/test/metabase/lib/stage_test.cljc
index 427485e8027985b598f8b9da8f204d1cc7f6acae..c60ad86bfdb695a7909fd7855b6bd7ee78185dff 100644
--- a/test/metabase/lib/stage_test.cljc
+++ b/test/metabase/lib/stage_test.cljc
@@ -224,43 +224,3 @@
                  (not (:temporal-unit opts))))
               "DATE"]]
             (map lib/ref cols)))))
-
-(deftest ^:parallel fields-should-not-hide-joined-fields
-  (let [query (-> (lib/query-for-table-name meta/metadata-provider "VENUES")
-                  (lib/with-fields [(lib/field (meta/id :venues :id))
-                                    (lib/field (meta/id :venues :name))])
-                  (lib/join (-> (lib/join-clause (lib/table (meta/id :categories)))
-                                (lib/with-join-alias "Cat")
-                                (lib/with-join-fields :all))
-                            [(lib/= (lib/field "VENUES" "CATEGORY_ID")
-                                    (lib/field "CATEGORIES" "ID"))])
-                  (lib/append-stage))]
-    (is (=? [{:base-type :type/BigInteger,
-              :semantic-type :type/PK,
-              :name "ID",
-              :lib/source :source/previous-stage
-              :effective-type :type/BigInteger,
-              :lib/desired-column-alias "ID",
-              :display-name "ID"}
-             {:base-type :type/Text,
-              :semantic-type :type/Name,
-              :name "NAME",
-              :lib/source :source/previous-stage,
-              :effective-type :type/Text,
-              :lib/desired-column-alias "NAME",
-              :display-name "Name"}
-             {:base-type :type/BigInteger,
-              :semantic-type :type/PK,
-              :name "ID",
-              :lib/source :source/previous-stage
-              :effective-type :type/BigInteger,
-              :lib/desired-column-alias "Cat__ID",
-              :display-name "ID"}
-             {:base-type :type/Text,
-              :semantic-type :type/Name,
-              :name "NAME",
-              :lib/source :source/previous-stage
-              :effective-type :type/Text,
-              :lib/desired-column-alias "Cat__NAME",
-              :display-name "Name"}]
-            (lib.metadata.calculation/visible-columns query)))))