Bạn có thể sử dụng thủ thuật chỉ dành cho mysql này:
SELECT city, state_prefix, lattitude,longitude
FROM zip_code WHERE city LIKE '$queryString%'
GROUP BY city, state_prefix -- Here's the trick
LIMIT 10
Thao tác này sẽ trả về hàng đầu tiên gặp phải cho mỗi giá trị duy nhất của city
và state_prefix
.
Các cơ sở dữ liệu khác sẽ phàn nàn rằng bạn có các cột non =--aggregated không được liệt kê trong nhóm bằng hoặc một số thông báo như vậy.
Đã chỉnh sửa
Trước đây, tôi đã tuyên bố rằng không sử dụng upper()
trên các cột được nhóm theo nó sẽ trả về tất cả các biến thể chữ hoa chữ thường, nhưng điều đó không chính xác - cảm ơn SalmanA đã chỉ ra điều đó. Tôi đã xác minh bằng SQLFiddle và bạn không cần sử dụng upper()
.