我有一个名为mapunit
的表,其中有一个名为muname
的列,主键名为mukey
。
我有另一个名为SpatialJoin
的表,其主键为mukey
。对于SpatialJoin
中的每一行,我想检索相应的muname
。
我试过了:
SELECT muname
FROM mapunit
WHERE EXISTS (SELECT mukey FROM SpatialJoin)
但这不起作用。关于如何重写我的陈述的任何建议将不胜感激。谢谢!
答案 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
尝试这可能有效