У меня очень большая таблица базы данных с более чем 500 тыс. Строк. Таблица содержит почтовую адреса:
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'
еще одна проблема, что мне не хватает
Этот запрос (предложение 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-скрипта трудно дать больше рекомендаций.
Ниже SQL достаточно создать отдельный граф:
SELECT DISTINCT county FROM addressess WHERE country = 'USA' AND county LIKE '%al%';