我有一个非常庞大的数据库表,行数超过500k。表包含邮政地址:
USERID, ADDRESS, CITY, COUNTY, ZIP , COUNTRY ....
我需要从表中获取一个国家的唯一县名,所以我尝试了:
SELECT DISTINCT `county`
FROM `addressess`
WHERE `country` = 'USA'
AND `county` LIKE '%al%' ESCAPE '!'
但是它返回了我同样的县名,所以我接下来尝试使用distanct
SELECT DISTINCT `county`
FROM `addressess`
WHERE `country` = 'USA'
AND `county` LIKE '%al%' ESCAPE '!'
GROUP BY `county`
仍然是同一个问题,我缺少什么
答案 0 :(得分:0)
此查询(不需要转义子句和单引号):
SELECT DISTINCT county
FROM addressess
WHERE country = 'USA' AND county LIKE '%al%';
返回不同的名称。 GROUP BY
做同样的事情。 SELECT DISTINCT
几乎不需要GROUP BY
;在这种情况下,两者一起做的相同。
如果两个名称看起来相同,那并不代表他们 相同。可能有尾随空格或其他隐藏字符。您可以添加length(county)
和char_length(county)
以查看长度是否相同,以及您看到的字母数是否与函数返回的字母数相匹配。
如果没有样本数据或SQL小提琴,很难提供更多指导。
答案 1 :(得分:0)
在SQL下面足以生成不同的县:
SELECT DISTINCT county FROM addressess WHERE country = 'USA' AND county LIKE '%al%';