Извлечение данных из базы данных при совпадении строк и пропуск повторяющихся значений - PullRequest
0 голосов
/ 28 августа 2018

У меня есть большая база данных миллионов фотографий. Он содержит поле с именем «Место», которое содержит информацию о местоположении (то есть город, провинция, город, страна и т. Д.) Для каждой фотографии в Db, как показано:

56461972:MetroTuria:POI,20220221:Olivereta:Suburb,776688:Valencia:Town,12602139:Valencia:Province,12578038:Valencia:AutonomousCommunity,20080321:46018:Zip,23424950:**Spain:Country**,56043644:Europe%2FMadrid:Timezone   

Я заинтересован в получении всех названий стран, найденных в нем, и, возможно, вернет их в другой таблице. И просто пропустите, где название страны повторяется. Таким образом, у меня будет представление о странах, где были сделаны фотографии. Таким образом, что-то вроде того, где находится этот текст, то есть ": Страна", извлекает название страны, связанной с ним, и добавляет его в новую таблицу.

Это немного сложно объяснить. Надеюсь, это имеет смысл.

Заранее спасибо.

* Некоторые обновления для ответа:

56558566:Duval+Street:Suburb,2432044:Key+West:Town,12587846:Monroe:County,2347568:Florida:State,12772085:33040:Zip,23424977:United+States:Country,56043648:America%2FNew_York:Timezone  
56574535:Columbus+Park:Suburb,2496012:South+Boston:Suburb,2367105:Boston:Town,12588712:Suffolk:County,2347580:Massachusetts:State,12758726:02127:Zip,23424977:United+States:Country,56043648:America%2FNew_York:Timezone    
1984273:Artybash:Town,2120895:GornoAltaysk:Town,12597718:Turochakskiy+Raion:District,20070530:Altai+Republic:Province,24553375:649:Zip,23424936:Russia:Country,56043608:Asia%2FOmsk:Timezone

И, пожалуйста, я просто хочу, чтобы они были восстановлены один раз. например Если «Испания» ассоциируется со многими изображениями, то это следует рассматривать только один раз. Моя цель - увидеть общее количество и название стран, в которых были сделаны снимки.

Пожалуйста, обратите внимание, что я только начинающий в SQL.

Ответы [ 2 ]

0 голосов
/ 28 августа 2018

Чтобы получить счет для каждой страны, вы можете использовать:

SELECT s1.theCountry, count(*) AS theCount
FROM (
  SELECT SUBSTRING_INDEX(SUBSTRING_INDEX(place, ':Country', 1),':',-1) AS theCountry
  FROM photos
) s1
GROUP BY s1.theCountry
0 голосов
/ 28 августа 2018

Если вы просто хотите извлечь страну, вы можете использовать:

select substring_index(substring_index(place, ':Country', 1), ':', -1)

Внутренний substring_index() извлекает часть перед страной. Это длинная строка, оканчивающаяся на ' . . . Zip,23424950:**Spain'. Внешний substring_index() принимает все после последнего двоеточия, которое является названием страны.

Здесь - тестер.

EDIT:

Если вы хотите считать по стране, то:

select substring_index(substring_index(place, ':Country', 1), ':', -1) as country,
       count(*)
from t
group by country;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...