MySQL跨数据库WHERE子句

时间:2010-09-20 16:14:21

标签: select mysql where-clause

我正在开展一个项目,该项目从世界各地的许多测量站(例如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 TableMysql 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)

任何人都可以帮助我吗?

1 个答案:

答案 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