Você pode usar este truque somente mysql:
SELECT city, state_prefix, lattitude,longitude
FROM zip_code WHERE city LIKE '$queryString%'
GROUP BY city, state_prefix -- Here's the trick
LIMIT 10
Isso retornará a primeira linha encontrada para cada valor exclusivo de
city
e state_prefix
. Outros bancos de dados reclamarão que você tem colunas não =agregadas não listadas no grupo por ou alguma mensagem desse tipo.
Editado
Anteriormente, eu afirmei que não usar o
upper()
função nas colunas agrupadas por ele retornaria todas as variações de maiúsculas e minúsculas, mas isso estava incorreto - graças a SalmanA por apontar isso. Eu verifiquei usando SQLFiddle e você não precisa usar upper()
.