sql - SQL在匹配时加入2个表,然后在表3中查找缺失值
问题描述
表 1(总公司地址)
Office | City | Country2Letter | Country3Letter | Address
US Chicago West Wacker | Chicago | US | USA | 111 West Wacker
US New York 11 Madison | New York | US | USA | 11 S Madison
US Detroit Jefferson Ave | Detroit | US | USA | 24 Jefferson Ave
表2(有些Office是正确的,有些不是)
SamAccountName | Office | BrandCode
dsmith | US Chicago West Wacker | RES
jdoe | US New York 11 Madison | DIG
msmith | US Detroit Jefferson Ave | DIG
表3
DLName | OfficeName | BrandCode
US Chicago West Wacker | US Chicago West Wacker | RES
US New York 11 Madison | US New York 11 Madison | DIG
因此,我想确保 OfficeName 来自主 Table1 并包含来自 Table2 的任何匹配的个人。然后我想显示表 3 中没有带有该 OfficeName 的 BrandCode 的任何缺失项目。
解决方案
首先,避免使用 OfficeName 作为列。引用应该是 officeId,这将允许更好的查询性能。
你的查询会有点像这样
select table2.* from table1 t1 join table2 t2 on t1.officeId=t2.officeId
select table3.* from table3 t3 where t3.officeId not in (<query above>)
推荐阅读
- javascript - 如何从收益中返回 *
- flutter - Flutter Provider 嵌套导航
- angular - formGroup 需要一个 FormGroup 实例,动态表单
- delphi - Delphi /w Indy 10:在 ERROR 400 (idHTTP) 后获取内容
- phpmyadmin - 两因素身份验证在 PMA 5.00 中不起作用
- sql-server - 在 SQL 中执行 SSIS 包时出错。文件连接管理器中未指定目录
- python - 替换numpy数组中的元素块
- django - 删除模型实例按钮
- c# - 我可以将 Ini 文件存储在资源文件中吗?
- pandas - 如何组合 groupby 和 sort 值