Полагаю, это связано с планом выполнения, выбранным в каждом случае, и сочетанием с применением номеров строк - в некоторых из этих планов. Вычисляются номера строк, а затем оцениваются условия WHERE
, поэтому вы видите непоследовательные номера строк.
Попробуйте это (сначала получите 30 нужных вам результатов, затем примените номера строк):
SET @rownum := 0;
SELECT customer_id, @rownum := @rownum +1 AS rank, score
FROM
( SELECT customer_id, score
FROM game_table_customers gtc
INNER JOIN customers c ON c.customers_id = gtc.customer_id
INNER JOIN game_table gt ON gtc.table_id = gt.table_id
WHERE c.my_team =11095
AND gt.event_id =21110
ORDER BY score DESC
LIMIT 0 , 30
) tmp
ORDER BY score DESC
Я не могу проверить это сейчас, но вы также можете попробовать это:
SELECT customer_id, @rownum := @rownum +1 AS rank, score
FROM game_table_customers gtc
INNER JOIN customers c ON c.customers_id = gtc.customer_id
INNER JOIN game_table gt ON gtc.table_id = gt.table_id
CROSS JOIN (SELECT @rownum := 0 AS rn) dummy
WHERE c.my_team =11095
AND gt.event_id =21110
ORDER BY score DESC
LIMIT 0 , 30