根据MySQL中第一个表的结果在第二个表中选择项目

时间:2014-12-23 15:22:16

标签: mysql

我有两个MySQL表tableA和tableB。在表A中,我想使用以下查询选择所有邮政编码及其各自的坐标:

SELECT zip,lat,lng
FROM tableA

但是,我想创建一对多关系,并根据第一个表中的结果选择第二个表中的所有项目。例如,我想选择tableB中每个邮政编码中的所有位置的列表。通常我会尝试运行如下的查询(假设邮政编码是' 00000':

SELECT locations
FROM tableB
WHERE distanceFormula(tableA.lat,tableA.lng,tableB.lat,tableB.lng) < 50

如何组合这两个查询以针对第一个查询中的每个结果运行第二个查询。

2 个答案:

答案 0 :(得分:1)

希望您能够做以下事情:

SELECT A.`zip`, A.`lat`, A.`lng`, B.`location`
FROM `tableA` AS A
CROSS JOIN (
    SELECT *
    FROM `tableB` AS B
    WHERE distanceFormula( A.`lat`, A.`lng`, B.`lat`, B.`lng` ) < 50
) AS B
WHERE A.`zip` = '000000';

我的语法可能稍微不正确,因为我之前没有在MySQL中完成这样的连接(我只在MSSQL上完成了它们)

答案 1 :(得分:1)

您可以使用subquerys:

SELECT locations
FROM tableB
WHERE zip IN 
(SELECT zip
FROM tableA);

http://www.mysqltutorial.org/mysql-subquery/