sql - 如何从两个表中获取特定记录
问题描述
我有 2 个表,表 1 包含电话号码和所有者姓名,表 2 有电话、名称以及城市和街道。表二中的问题是所有者姓名是为电话号码付款的人的姓名,而不是实际所有者的姓名(例如,如果我父亲为我的电话号码付款,他的名字将出现在我的号码旁边)。我想要做的是编写一个查询,检查两个表上是否存在电话号码,如果存在,我想从表一中查看所有者名称,从表二中查看其他信息。
另外,如果有一个仅存在于表二上的数字,我想看到它。如果数字只在第一张表上,我也想看到它,但地址和城市列为空。
预期结果示例:
我不知道该怎么做,如果有人能告诉我在哪里寻找答案,那将非常有帮助。
解决方案
你想要一个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);
推荐阅读
- javascript - HTML CSS:使用带有 SVG 图标的可折叠切换
- java - java流映射对象参数到hashset
- pycharm - 如何从 PEP8 命名约定中排除某些单词?
- java - 分发 Java LWJGL 程序
- functional-programming - 命题逻辑的解析器组合器
- stata - 使用零值对变量进行分类
- oracle - 在 PLSQL 中使用带有 Substr 的变量
- reactjs - 源组件在路由到其他网站页面时不断呈现
- laravel - Auth guard 仅在 laravel 中默认工作
- php - POST 数据时导致 mod_security 406 Not Acceptable 的原因是什么?