首页 > 解决方案 > 如何从两个表中获取特定记录

问题描述

我有 2 个表,表 1 包含电话号码和所有者姓名,表 2 有电话、名称以及城市和街道。表二中的问题是所有者姓名是为电话号码付款的人的姓名,而不是实际所有者的姓名(例如,如果我父亲为我的电话号码付款,他的名字将出现在我的号码旁边)。我想要做的是编写一个查询,检查两个表上是否存在电话号码,如果存在,我想从表一中查看所有者名称,从表二中查看其他信息。

另外,如果有一个仅存在于表二上的数字,我想看到它。如果数字只在第一张表上,我也想看到它,但地址和城市列为空。

预期结果示例:

在此处输入图像描述

我不知道该怎么做,如果有人能告诉我在哪里寻找答案,那将非常有帮助。

标签: sqlsqlitedb-browser-sqlite

解决方案


你想要一个full join. 用 SQLite 实现这一点的一个简单方法是使用union all

select t2.address, t2.city, t1.phone, t1.name
from table1 t1 left join
     table2 t2
     using (phone)
union all
select t2.address, t2.city, t2.phone, t2.name
from table2 t2
where not exists (select 1 from table1 t1 where t1.phone = t2.phone);

推荐阅读