SQL:在两个表之间查询

时间:2012-03-19 08:16:02

标签: sql

我有一个名为mapunit的表,其中有一个名为muname的列,主键名为mukey

我有另一个名为SpatialJoin的表,其主键为mukey。对于SpatialJoin中的每一行,我想检索相应的muname

我试过了:

SELECT muname 
FROM mapunit 
WHERE EXISTS (SELECT mukey FROM SpatialJoin)

但这不起作用。关于如何重写我的陈述的任何建议将不胜感激。谢谢!

5 个答案:

答案 0 :(得分:1)

您正在从 mapunit 中选择所有行,其中存在于SpatialJoin 中,而不是您想要的。

尝试从 SpatialJoin 中选择每一行,然后只需加入 mapunit 即可获取名称;

SELECT muname
FROM SpatialJoin sj
JOIN mapunit mu ON mu.mukey = sj.mukey

答案 1 :(得分:0)

试试这个:

SELECT
    mu.MuName, mu.mukey
FROM
    SpatialJoin sj
INNER JOIN
    Mapunit mu ON sj.mukey = mu.mukey

INNER JOIN将在定义的JOIN条件下“加入”两个表,现在您可以从SELECT中的两个表中选择列。 INNER JOIN也只加入具有该公共列的两个表中的行(以及该公共列中的相同值)。

更新:要从第三个CompName表中获取Component,请尝试以下操作:

SELECT
    mu.MuName, mu.mukey, c.CompName
FROM
    SpatialJoin sj
INNER JOIN
    Mapunit mu ON sj.mukey = mu.mukey
INNER JOIN
    Component c ON sj.mukey = c.mukey

答案 2 :(得分:0)

SELECT m.muname
FROM mapunit m, SpatialJoin s
WHERE m.mukey=s.mukey

答案 3 :(得分:0)

试试这个:

SELECT b.muname
FROM SpatialJoin a INNER JOIN mapunit b
        on a.mukey = b.mukey

答案 4 :(得分:0)

SELECT muname
FROM SpatialJoin s
JOIN mapunit m ON m.mukey = s.mukey 

尝试这可能有效