[英]Select only unique row/record in mysql
我想看看如何才能獲得具有獨特城市的唯一行/記錄,而不關心它是否是資本,例如:
Akron
akron
aKRON
只返回一條記錄。
我累了這樣的東西,但它不起作用
"SELECT DISTINCT(city) AS city,state_prefix,lattitude,longitude FROM zip_code WHERE city LIKE '$queryString%' LIMIT 10"
謝謝...
你可以使用這個僅限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
這將返回為city
和state_prefix
每個唯一值遇到的第一行 。
其他數據庫會抱怨您有非= -aggregated列未在組中列出或某些此類消息。
以前我聲稱不使用分組列上的upper()
函數,它將返回所有大小寫變體,但這是不正確的 - 感謝SalmanA指出了這一點。 我使用SQLFiddle進行了驗證,您不需要使用upper()
。
它不適用於其他DBMS,但在MySql中你可以使用它:
SELECT city, state_prefix,lattitude,longitude
FROM zip_code WHERE city LIKE '$queryString%'
GROUP BY city
LIMIT 10
比較字符串時,MySql忽略大小寫,例如,這返回true:
select 'hello'='Hello '
並且您還可以按單個字段(在本例中為城市)進行分組,並返回所有其他字段。 其他字段的值未確定,它們通常是第一行中的值,但您無法對其進行中繼。
您可以在GROUP BY中使用函數將所有名稱轉換為大寫或小寫:
SELECT city,state_prefix,lattitude,longitude
FROM zip_code WHERE city LIKE '$queryString%'
GROUP BY UPPER(city), UPPER(state_prefix) LIMIT 10
我假設一個城市和州的比賽,經度和經度可以安全地卷起來。
您的表格或城市列可能具有區分大小寫的排序規則設置。
您可以像這樣在SELECT語句中顯式選擇排序規則。 如果選擇不區分大小寫的排序規則, DISTINCT
關鍵字將執行您希望它執行的操作。
SELECT DISTINCT
city COLLATE utf8_general_ci,
state_prefix COLLATE utf8_general_ci,
lattitude,longitude
FROM zip_code
WHERE city LIKE '$queryString%'
LIMIT 10
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.