Я не могу воспроизвести вашу проблему
drop table if exists rank_list,names;
create table rank_list
(id int,name_id int,rank1 int,rank2 int,type varchar(10));
create table names
(id int, name varchar(3));
insert into rank_list values
(1,1,1,1,'typea'),(2,2,3,1,'typea'),
(2,2,1,1,'typeb');
insert into names values
(1,'aaa'),(2,'bbb');
(SELECT
rank_list.id,
name,
rank1,
rank2
FROM rank_list
LEFT JOIN names ON names.id = rank_list.name_id
WHERE type = "typeA"
ORDER BY rank1 desc
LIMIT 50)
UNION ALL
(SELECT
rank_list.id,
name,
rank1,
rank2
FROM rank_list
LEFT JOIN names ON names.id = rank_list.name_id
WHERE type = "typeB"
ORDER BY rank2 desc
LIMIT 50);
+------+------+-------+-------+
| id | name | rank1 | rank2 |
+------+------+-------+-------+
| 2 | bbb | 3 | 1 |
| 1 | aaa | 1 | 1 |
| 2 | bbb | 1 | 1 |
+------+------+-------+-------+
3 rows in set (0.00 sec)
Примечание. У меня полностью идентифицированный идентификатор. Если ваша модель отличается, то без дополнительного ответа от вас любой ответ или комментарий будет угадан.