SQL查询匹配2个表中的行

时间:2014-06-03 21:25:46

标签: sql

我有2张桌子。如何创建一个搜索两个表的查询,并仅返回在所有三列中具有完全相同信息的行?

例如,这些是两个表。我可以创建一个返回Steve Heinrich行的查询,因为它们在两个表中都是相同的吗?

ID   Firstname   Lastname

01   Bob         Freeman 
02   Steve       Heinrich
03   Jill        Brown
04   Larry       Jordan


ID   Firstname   Lastname

01   Bill        Parson
03   Jack        Daniels
02   Steve       Heinrich
04   Joe         Morgan

4 个答案:

答案 0 :(得分:2)

如果它们在两个表中都相同,那么它们就在第一个表中。因此,您可以使用exists

select t1.*
from t1
where exists (select 1
              from t2
              where t1.id = t2.id and t1.firstname = t2.firstname and
                    t1.lastname = t2.lastname
             );

这是标准的SQL,因此它应该适用于所有数据库。

答案 1 :(得分:1)

您需要对ID以及名字和姓氏

执行INNER JOIN

答案 2 :(得分:0)

两个表的内连接在所有三列上都有连接条件:

select tableA.*
from 
tableA
inner join tableB

where
tableA.Id = tableB.Id
and tableA.FirstName = tableB.FirstName
and tableA.LastName = tableB.LastName

答案 3 :(得分:0)

选择 *

FROM table1

INNER JOIN table2

开启 table1.ID = table2.ID AND

table1.Firstname = table2.Firstname AND

table1.Lastname = table2.Lastname;