选择不同的值

时间:2018-04-14 13:16:36

标签: mysql sql

我有一个非常庞大的数据库表,行数超过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 个答案:

答案 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%';