选择不同的值

tvmytwxo  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(223)

我有一个非常大的数据库表,有超过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`

还是一样的问题,我还缺什么

py49o6xq

py49o6xq1#

此查询(不需要escape子句和单引号):

SELECT DISTINCT county
FROM addressess
WHERE country = 'USA' AND county LIKE '%al%';

返回不同的名称。这个 GROUP BY 做同样的事。 SELECT DISTINCT 几乎不需要 GROUP BY ; 在本例中,两者一起执行与单独执行相同的操作。
如果两个名字看起来一样,那并不意味着他们是一样的。可能有尾随空格或其他隐藏字符。您可以添加 length(county) 以及 char_length(county) 查看长度是否相同,以及看到的字母数是否与函数返回的字母数匹配。
如果没有示例数据或sql fiddle,就很难提供更多的指导。

uttx8gqw

uttx8gqw2#

下面的sql足以生成distinct county:

SELECT DISTINCT county
    FROM addressess
    WHERE country = 'USA' AND county LIKE '%al%';

相关问题