Hola Camilo, si solo necesitas saber el número de registros que cumplen una condición en la base de datos (es decir, saber si hay por ejemplo 17 registros cuya ciudad es Medellín) lo más fácil es usar una consulta count.
SELECT COUNT(*), ciudad FROM usuarios WHERE `ciudad` = "Barcelona"
Nos devolvería el número de registros de la tabla usuarios donde el campo ciudad es Barcelona. El resultado podría ser como este:
COUNT(*) ciudad
45 Barcelona
Esto significaría que hay 45 registros donde la ciudad es Barcelona.
También tienes opción a realizar una consulta donde cada una de las apariciones de la ciudad quede numerada:
SELECT l.ciudad,
@curRow := @curRow + 1 AS row_number
FROM usuarios l
JOIN (SELECT @curRow := 0) r
WHERE l.ciudad = "Barcelona";
El resultado de esta consulta sería parecido a:
ciudad row_number
Barcelona 1
Barcelona 2
Barcelona 3
Barcelona 4
Tantas filas como veces aparezca la ciudad buscada.
Si además del nombre de ciudad quieres que aparezca el resto de la información de la tabla puedes usar:
SELECT l.*,
@curRow := @curRow + 1 AS row_number
FROM usuarios l
JOIN (SELECT @curRow := 0) r
WHERE l.ciudad = "Barcelona";
En este caso el resultado sería parecido a
nombre ciudad row_number
Camilo Bogotá 1
Andres Bogotá 2
Francisco Bogotá 3
Esto puedes combinarlo con una consulta previa para saber cuáles son las ciudades existentes en la base de datos, por ejemplo
SELECT DISTINCT ciudad
FROM usuarios
Te devolvería
Bogotá
Medellín
Cali
etc.
Saludos!