我有数百万张照片的大型数据库。它包含一个名为“地方”的字段,其中包含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
我有兴趣检索在其中找到的所有国家/地区名称,并且可能会将它们返回到另一个表中。然后跳过国家名称重复的地方。这样,我将对拍摄照片的国家有所了解。 因此,类似于找到该文本(即“:Country”)的地方,它将检索与之关联的国家/地区名称,并将其添加到新表中。
这很难解释。希望有道理。
预先感谢。
*一些响应更新:
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的初学者。
答案 0 :(得分:1)
如果您只想提取国家/地区,则可以使用:
select substring_index(substring_index(place, ':Country', 1), ':', -1)
内部substring_index()
提取国家之前的部分。这是一个长字符串,结尾为' . . . Zip,23424950:**Spain'
。外部的substring_index()
占据了最后一个冒号之后的所有字符,这是国家的名字。
Here是一个学期。
编辑:
如果要按国家/地区计数,则:
select substring_index(substring_index(place, ':Country', 1), ':', -1) as country,
count(*)
from t
group by country;
答案 1 :(得分:0)
要获取每个国家/地区的计数,可以使用:
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