我正在开展一个项目,该项目从世界各地的许多测量站(例如50000)获取值。我有2个数据库,一个存储关于测量站的信息,另一个存储从这些站获得的值(例如几百万)。数据库结构的超简化版本可能如下所示:
database measurement_stations
table measurement_station
id : primary key
name : colloquial station name
country : foreign key into table country
table country
id : primary key
name : name of the country
database measurement_values
table measurement_value
id : primary key
station : id of the station the value came from
value : measured value
我需要第一个数据库中所有国家/地区的名称列表,其中第二个数据库中存在值。我正在使用带有InnoDB的MySQL,因此支持跨数据库外部。
我迷失在SELECT语句上,更具体地说,是where子句。
选择存在值的国家/地区的ID似乎很简单:
SELECT DISTINCT id FROM measurement_values.measurement_value
第一次这需要几分钟,但即使在数据库服务器重启后,在后续调用中也非常快;我认为这是正常的。
我认为Problem with Query Data in a Table和Mysql Complex Where Clause中提到的COUNT技巧可能有所帮助,但我似乎无法做到正确。
SELECT country.name FROM measurement_stations WHERE country.id = measurement_station.id
AND (id is in the result of the previous SELECT statement)
任何人都可以帮助我吗?
答案 0 :(得分:0)
这应该这样做:
select distinct m.country, ct.name
from measurement_stations..measurement_station m
inner join measurement_values..measurement_value mv on mv.station = m.id
inner join measurement_stations..country ct on ct.id = m.country