diff --git a/ibis/backends/tests/test_generic.py b/ibis/backends/tests/test_generic.py
index <HASH>..<HASH> 100644
--- a/ibis/backends/tests/test_generic.py
+++ b/ibis/backends/tests/test_generic.py
@@ -397,3 +397,8 @@ def test_dropna_table(backend, alltypes, how, subset):
     # is type object in Pyspark, and type bool in Pandas. This diff does
     # not exist in Java 11.
     backend.assert_frame_equal(result, expected, check_dtype=False)
+
+
+def test_select_sort_sort(alltypes):
+    query = alltypes[alltypes.year, alltypes.bool_col]
+    query = query.sort_by(query.year).sort_by(query.bool_col)
diff --git a/ibis/expr/operations/relations.py b/ibis/expr/operations/relations.py
index <HASH>..<HASH> 100644
--- a/ibis/expr/operations/relations.py
+++ b/ibis/expr/operations/relations.py
@@ -481,7 +481,7 @@ class Selection(TableNode, sch.HasSchema):
                     self.table,
                     self.selections,
                     predicates=self.predicates,
-                    sort_keys=self.sort_keys + resolved_keys,
+                    sort_keys=self.sort_keys + tuple(resolved_keys),
                 )
 
         return Selection(expr, [], sort_keys=resolved_keys)
fix: regression in Selection.sort_by with resolved_keys