正确的联接语法仅连接表A中与表B相匹配的行

时间:2018-12-31 02:35:08

标签: mysql sql join

我的目标

我正在尝试对表A和表B进行联接。

我想列出表A中每条街道的所有居民。但是,我不想列出表A中的所有人,只列出表中每条街道的居民。 B。

我尝试过的事情

  • A和B上的内部加入:仅返回每个地址的第一个人
  • 左加入:返回所有人
  • 右加入:从B返回两个街道,每个地址的第一人称

表A

Fred    123 Fake Street
Bob     456 Any Street
Alice   456 Any Street
Jenny   879 Spring Street
Cassie  879 Spring Street
Spinner 227 Nothing Street
Ranger  227 Nothing Street
Swifty  227 Nothing Street
Loggy   821 Victory Way

表B

227 Nothing Street
456 Any Street

查询结果(某种类型的联接)

Spinner 227 Nothing Street
Ranger  227 Nothing Street
Swifty  227 Nothing Street
Bob     456 Any Street
Alice   456 Any Street

2 个答案:

答案 0 :(得分:2)

INNER JOIN可以正常工作:

SELECT a.*
FROM tableA a
JOIN tableB b ON b.address = a.address

输出:

name    address
Bob     456 Any Street
Alice   456 Any Street
Spinner 227 Nothing Street
Ranger  227 Nothing Street
Swifty  227 Nothing Street

Demo on dbfiddle

答案 1 :(得分:1)

您似乎想要:

select a.*
from a
where exists (select 1 from b where b.address = a.address);

您可以使用inner join做同样的事情。我不知道“ A和B上的内部联接:仅返回每个地址的第一个人”的意思。那简直是不正确的。