我有一个非常大的数据库表,有超过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`
还是一样的问题,我还缺什么
2条答案
按热度按时间py49o6xq1#
此查询(不需要escape子句和单引号):
返回不同的名称。这个
GROUP BY
做同样的事。SELECT DISTINCT
几乎不需要GROUP BY
; 在本例中,两者一起执行与单独执行相同的操作。如果两个名字看起来一样,那并不意味着他们是一样的。可能有尾随空格或其他隐藏字符。您可以添加
length(county)
以及char_length(county)
查看长度是否相同,以及看到的字母数是否与函数返回的字母数匹配。如果没有示例数据或sql fiddle,就很难提供更多的指导。
uttx8gqw2#
下面的sql足以生成distinct county: