diff --git a/src/metabase/driver/query_processor.clj b/src/metabase/driver/query_processor.clj
index 92f96cc1fa99f78befa4fa0109d4e2a6c21f9944..7116d61ee2cb0b3ca21794958e3b13306a041dc8 100644
--- a/src/metabase/driver/query_processor.clj
+++ b/src/metabase/driver/query_processor.clj
@@ -318,7 +318,8 @@
                                                                  (:id %))
                                                       (contains? (set field-field-ids)
                                                                  (:id %)))))
-                                    (sort-by :position))]
+                                    (sort-by (fn [{:keys [position id]}]
+                                               [position (when id (- id))])))]
     (->> (concat breakout-fields field-fields other-fields)
          (map :castified)
          (filter identity))))