如何使用SQL联接和选择从与前两个表匹配的第三个表中获取结果?
我在表1和表2中有一个Join语句,它返回城市和州。我还有另一个表3,其中包含名称、城市、州、国家等列。我想从表3中获取其城市和州列与连接结果中的行相匹配的所有行如何使用SQL联接和选择从与前两个表匹配的第三个表中获取结果?,sql,Sql,我在表1和表2中有一个Join语句,它返回城市和州。我还有另一个表3,其中包含名称、城市、州、国家等列。我想从表3中获取其城市和州列与连接结果中的行相匹配的所有行 Select * from 3rdTable where City='' AND State=''; Join的结果是 - City | State - A | B - C | D - E | F 第三个表中只有一行匹配时的结果示例 - C | D 如何做到这一点?确定连接,我们有内部连接、左
Select * from 3rdTable where City='' AND State='';
Join的结果是
- City | State
- A | B
- C | D
- E | F
第三个表中只有一行匹配时的结果示例
- C | D
如何做到这一点?确定连接,我们有内部连接、左侧连接、右侧连接和外部连接;也许了解差异可以帮助你回答问题。
而且代码也不清楚:您可以使用联接表作为第三个表中的子表来创建where子句,如下所示
select *
from 3rdTable
where City+'|'+State= (select a.City+'|'+b.State
from a
inner join b
on a.x=b.y)
如果要连接字段,可以创建一个与联接子查询相等的等式,只需在第三个表中联接即可 如果我们假设表1中既有城市也有州
SELECT A.City, A.State
FROM Table1 A
INNER JOIN table2 B
on A.PK = B.A_FK
INNER JOIN table3 C
on A.City = C.City
and A.State = C.State
这是内部联接的本质:包括联接数据匹配的所有表中的所有行
如果使用左、右、全外部联接,则可以从一个表中获取所有记录,而只获取其他表中匹配的记录,或者从所有表中获取所有记录,这些记录在匹配的位置对齐。我认为这可以帮助您:
SELECT T3.*
FROM
table_1_2_join T12 /* replace this placeholder table with the select statement that joins your 2 tables */
JOIN table_3 T3 ON T3.City = T12.city AND T3.state = T12.state
如果您需要更多详细信息,请告诉我。您可以分享您的代码吗?现在还不清楚我已经编辑了这个问题,希望它现在清楚了…它在将=改为从第三张表中选择*后起作用,其中城市+“|”+State=从a.x=b.yOk上的内部连接b中选择a.City+“|”+b.State,我希望我的回答是朝着正确方向迈出的一步,现在问题解决了,对吗?这不是答案,而是建议或评论。它在那里的位置更好
SELECT *
FROM table3 t3
INNER JOIN (SELECT city,
state
FROM table1 T1
JOIN table2 t2
ON t1.id = t2.id) a1
ON t3.city = a1.city
AND t3.state = a1.state