Voy a desarrollar un poco más la consulta encapsulándola en otra consulta que sólo me devuelva el registro deseado con su posición:
Código:
SET @row = 0;
SELECT col, nombre
FROM (
SELECT @row := @row + 1 AS col, nombre, valor
FROM nombres
ORDER BY valor
) names
WHERE nombre="Juan"
El select interior saca nombres, valores y posiciones, y el select exterior muestra sólo el registro de "Juan"
La respuesta es "3 => Juan"