Запрос - какая-то адская фантасмагория. Нахрена здесь джойн, если из а берется только ид, который равен b.meta_value? Я уже не говорю про джойн с селектом и груп бай.
Такое ощущение, что запрос писал сумасшедший под веществами в состоянии белой горячки.
все что здесь нужно - это
SELECT SQL_CALC_FOUND_ROWS b.id, b.meta_name, b.meta_value
FROM b WHERE b.meta_name = '***'
ORDER BY b.meta_value DESC
LIMIT 0, 20;
SELECT FOUND_ROWS()
После объяснений в комментах стало понятно, что нам нужен подзапрос
SELECT SQL_CALC_FOUND_ROWS a.id,
(SELECT b.meta_value from b where b.meta_name=a.id order by b.id limit 1) as lastprice
FROM a LIMIT 0, 20