复合键中的右联接 - Access SQL
Posted
技术标签:
【中文标题】复合键中的右联接 - Access SQL【英文标题】:Right JOIN in composite key - Access SQL 【发布时间】:2020-05-26 16:48:20 【问题描述】:我尝试查找数据仅在表 B 中可用但此 SQL 代码无法正常工作的行,结果与我们的内部连接相同
SELECT DISTINCT B.code_localisation, B.nom_poste, B.Batiment, B.Panneau
FROM A RIGHT JOIN B
ON (A.code_localisation = B.code_localisation) AND (A.Panneau = B.Panneau)
WHERE (A.code_localisation IS NULL AND A.Panneau IS NULL)
【问题讨论】:
请解释“不工作”是什么意思。 我应该只拥有 A 中不存在的 B 记录,其中包含 2 个复合键:Panneau 和 code_localisation。当我这样做时,我找到了内部连接的所有记录。这就像 where 语句不起作用。 【参考方案1】:我建议NOT EXISTS
:
select b.*
from b
where not exists (select 1
from a
where a.code_localisation = b.code_localisation and
a.Panneau = b.Panneau
);
这应该等同于您的right join
,所以我不能 100% 确定它会解决您的问题。
【讨论】:
还是一样的结果 @H_B 。 . .您认为匹配的键不是。您应该编辑您的问题并提供示例数据和所需的结果。【参考方案2】:请在连接中使用 where 子句,
SELECT DISTINCT B.code_localisation, B.nom_poste, B.Batiment, B.Panneau
FROM A RIGHT JOIN B
ON (A.code_localisation = B.code_localisation AND A.Panneau = B.Panneau
AND A.code_localisation IS NULL AND A.Panneau IS NULL)
【讨论】:
这是什么..? 在where语句中给表B的key加not null解决 那么在你的问题中你没有提到要使用的条件以上是关于复合键中的右联接 - Access SQL的主要内容,如果未能解决你的问题,请参考以下文章