diff --git a/src/bin/psql/tab-complete.c b/src/bin/psql/tab-complete.c
index 0cb34640eded0f1e317890bc1ac7371f64571367..4294ffd0520ebc4ca7bedfe6c74b28532b070ab9 100644
--- a/src/bin/psql/tab-complete.c
+++ b/src/bin/psql/tab-complete.c
@@ -3227,15 +3227,6 @@ psql_completion(const char *text, int start, int end)
 			COMPLETE_WITH_CONST("FROM");
 	}
 
-	/* Complete "GRANT/REVOKE * ON * *" with TO/FROM */
-	else if (pg_strcasecmp(prev5_wd, "GRANT") == 0 &&
-			 pg_strcasecmp(prev3_wd, "ON") == 0)
-		COMPLETE_WITH_CONST("TO");
-
-	else if (pg_strcasecmp(prev5_wd, "REVOKE") == 0 &&
-			 pg_strcasecmp(prev3_wd, "ON") == 0)
-		COMPLETE_WITH_CONST("FROM");
-
 	/* Complete "GRANT/REVOKE * ON ALL * IN SCHEMA *" with TO/FROM */
 	else if ((pg_strcasecmp(prev8_wd, "GRANT") == 0 ||
 			  pg_strcasecmp(prev8_wd, "REVOKE") == 0) &&
@@ -3295,6 +3286,15 @@ psql_completion(const char *text, int start, int end)
 			  pg_strcasecmp(prev_wd, "FROM") == 0))
 		COMPLETE_WITH_QUERY(Query_for_list_of_grant_roles);
 
+	/* Complete "GRANT/REVOKE * ON * *" with TO/FROM */
+	else if (pg_strcasecmp(prev5_wd, "GRANT") == 0 &&
+			 pg_strcasecmp(prev3_wd, "ON") == 0)
+		COMPLETE_WITH_CONST("TO");
+
+	else if (pg_strcasecmp(prev5_wd, "REVOKE") == 0 &&
+			 pg_strcasecmp(prev3_wd, "ON") == 0)
+		COMPLETE_WITH_CONST("FROM");
+
 	/*
 	 * Complete "GRANT/REVOKE * TO/FROM" with username, PUBLIC,
 	 * CURRENT_USER, or SESSION_USER.