Если я правильно определяю ваш вопрос, вы хотите ранжировать c_ranks по возрастанию или каждое u_name, а затем упорядочить по этому рангу, а затем u_rank. После этого вам нужно получить ранг для всех записей в этом порядке. Я не уверен, что способ, которым я только что сформулировал, имел какой-то смысл ... но следующий результат должен получить этот результат для вас:
SET @rank1 = 0;
SET @rank2 = 0;
SET @u_name = '';
SELECT u_rank, c_rank, u_name, c_name, @rank2 := @rank2 + 1 AS rank
FROM (
SELECT u_rank,
c_rank,
c_name,
@rank1 := (@rank1 + 1 - IF(@u_name = u_name, 0, @rank1)) AS rank1,
@u_name := u_name AS u_name
FROM abc
ORDER BY u_name, c_rank
) foo
ORDER BY rank1, u_rank;