Pero de lo contrario no, porque si existe solo una Maria en la tabla no hay razón para que el MAX( ) de ese resultado
Si ternura te entiendo en parte, aunque debes asumir que si el usuario que inicio el post dijo yo quiero todos aquellos clientes unicos que no se repitan, es porque de alguna manera el debe tener muchos clientes repetidos. Imaginate que yo tengo la siguiente tabla:
mysql> select * from clientes;
+---------+-----------+
| cliente | ciudad |
+---------+-----------+
| Maria | Mexico |
| Carlos | Peru |
| Luis | Africa |
| Matias | Peru |
| Ana | Argentina |
| Luis | Mexico |
| Ana | Brazil |
| Maria | Uruguay |
+---------+-----------+
8 rows in set (0.00 sec)
Como veras hay clientes repetidos en el caso de la tabla expuesta tenemos como clientes repetidos a 'Ana' y 'Maria' Como tambien puedes observar cada una de ellas esta en un pais distinto. Ahora que ocurre con esta consulta:
mysql> select cliente, max(ciudad) from clientes group by cliente;
+---------+-------------+
| cliente | max(ciudad) |
+---------+-------------+
| Ana | Brazil |
| Carlos | Peru |
| Luis | Mexico |
| Maria | Uruguay |
| Matias | Peru |
+---------+-------------+
5 rows in set (0.00 sec)
Al utilizar la funcion MAX(ciudad) estas diciendo a la consulta, devuelveme todos los registros que tengan el mayor valor (si fueran campos numericos) pero como son campos caracteres, el MAX() lo que hace es retornar todas aquellas frases que empiezen con el caracter que se aproxime mas a la letra 'Z' que es la ultima del abecedario y la cual vendria siendo la de mayor valor si fuese numerica. Por ende la consulta anterior devuelve a 'Ana' con Ciudad 'Brazil' (Ya que Ana en ciudad Argentina, recuerda que Argentina empieza por 'A' por lo cual 'Brazil' es mayor por empezar con 'B' por eso la consulta te retorna el valor de 'Ana' que le pertenece 'Brazil' y no 'Ana' que le pertenece 'Argentina' lo mismo ocurre para 'Maria' se retorna 'Maria de Uruguay' y no 'Maria de Mexico' el caracter 'U' de Uruguay esta mas cerca de la 'Z' que la 'M' de 'Mexico'
no se si me explico
)
Prosigo, recuerda que el usuario que inicio este post dijo, yo quiero todos los Clientes unicos no repetidos (por lo cual en parte de la peticion de Clientes tu consulta estaria correcta devuelve los clientes unicos no repetidos) pero.... porque hay otro pero en el aire
recuerda que el amigo solicito que tambien queria todas las ciudades se repitiesen o no.... entonces, si utilizamos la funcion MAX() como propones y al utilizar el GROUP BY que es una clausula que dice por cada uno, que hara tu consulta? MAX le dara prioridad a 'Maria de Brazil' pero que pasa con 'Argentina' el usuario no quiere a 'Maria Argentina' pero si quiere a 'Argentina', entonces que pasa con la ciudad 'Argentina' con la consulta usando MAX y GROUP BY???? se queda fuera, asi de simple. Sin embargo con un UNION ALL
mysql> SELECT DISTINCT cliente FROM clientes
-> UNION ALL
-> SELECT ciudad FROM clientes;
+-----------+
| cliente |
+-----------+
| Maria |
| Carlos |
| Luis |
| Matias |
| Ana |
| Mexico |
| Peru |
| Africa |
| Peru |
| Argentina |
| Mexico |
| Brazil |
| Uruguay |
+-----------+
13 ROWS IN SET (0.00 sec)
De los cuales :
Clientes unicos no repetidos:
Maria |
| Carlos |
| Luis |
| Matias |
| Ana
Todas las ciudades repetidas o no:
| Mexico |
| Peru |
| Africa |
| Peru |
| Argentina |
| Mexico |
| Brazil |
| Uruguay |
De esa manera el chico obtiene los clientes unicos no repetidos, y obtiene todas las ciudades se repitan o no... lamentablemente los datos vienen juntos con el UNION ALL primero imprime los clientes unicos y debajo de estos todas las ciudades... por lo cual le dije que el debia filtrar o buscar la forma de obtener esos datos individualmente o imprimirlos asi en su Listbox.