sql - 根据特定列连接/合并来自两个不相关表的记录
问题描述
我有两张桌子:
项目
- ItemId PK - 主键
- 统一专利证书,
- EAN
TDItems
- TdItemsId PK -- 主键
- 统一专利证书,
- EAN
这两个表在我的数据库中没有通过 FK 约束相关。
这些表包含共享相同信息的项目,我希望根据这些信息加入/联合它们:UPC 和 EAN 列
我试过做一个这样的简单查询:
select *
from Items as It join TDItems as tdi
on it.UPC=tdi.UPC and it.EAN=tdi.EAN
此查询返回“一些”结果,但是当我合并两个查询时,如下所示:
select *
from Items as It join TDItems as tdi
on it.UPC=tdi.UPC
UNION -- important part I guess?
select *
from Items as It join TDItems as tdi
on it.EAN=tdi.EAN
第一个查询返回 504 个结果,第二个查询返回 709 个结果...
所以我的问题是:
- 为什么第一个查询应该相同时返回较少的结果?
- 我将如何进行此查询,以便它返回它找到的行数(即 504、600 或任何可能的数字?)
有人可以帮我为这些问题写一个正确的查询吗?
编辑:
嘿@Gordon 我已经重写了内部连接
select *
from Items as It join TDItems as tdi
on it.UPC=tdi.UPC OR it.EAN=tdi.EAN
这是否是让商品在 UPC 或 EAN 上匹配的解决方案(即不必是匹配的 UPC 和 EAN 对)
解决方案
UNION
更像是一个OR
查询将更像 UNION
select *
from Items as It
join TDItems as tdi
on it.UPC = tdi.UPC
or it.EAN = tdi.EAN
推荐阅读
- ios - iOS 自定义 URL 方案以使用捆绑标识符打开我的其他应用程序
- javascript - 使用下拉选择的值更新单元格
- click - 上下文菜单项
- javascript - 将 Vuejs Anime 组件添加到 Vue Cli
- python-3.x - 冒泡排序大大优于选择排序
- php - 验证 Xpath 或 CSS 的 PhP 函数 - Behat
- angular - Angular fontawsome sizing - 无法绑定到“ngClass”,因为它不是“fa-icon”的已知属性
- google-cloud-platform - 计算引擎资源 CPU 使用率
- java - 如何设置第二行标识,即 WP NO。在java中使用开源apache poi?
- php - 我的 php 代码运行,加载,但没有输出