sql - 删除重复的反向对
问题描述
我正在制作一个包含所有产品 SKU(fj1_sku 列)的表格,并根据一系列标准与第二个产品的产品 SKU 配对,该产品是该产品的紧密替代品(fj2_sku 列)。为了获得主矩阵,我已经完成了 final_join 表与自身的交叉连接。
我无法弄清楚如何删除结果表中的镜像重复对:
fj1_sku | fj2_sku |
---|---|
10 | 11 |
11 | 10 |
即我只想要一对 11 和 10 的一排。
我已经尝试了在这个平台上找到的许多解决方案,但不想使用“选择不同的”,因为我需要许多我不能使用不同的变量。
这是我到目前为止的代码:
select
fj1.sku as fj1_sku,
fj2.sku as fj2_sku,
fj1.name as fj1_name,
fj2.name as fj2_name,
fj1.brand as fj1_brand,
fj2.brand as fj2_brand
from final_join as fj1
cross join final_join as fj2
where (fj1.sku <> fj2.sku) and (fj1.brand <> fj2.brand)
解决方案
如果所有对都有重复项,则可以使用:
select t.*
from t
where fj1_sku < fj2_sku;
如果没有,您可以使用更具选择性:
select t.*
from t
where t.fj1_sku < t.fj2_sku or
not exists (select 1
from t t2
where t2.fj1_sku = t.fj2_sku and
t2.fj2_sku = t.fj1_sku
);
delete
如果您确实想更改表,也可以将类似的逻辑合并到 a中。
推荐阅读
- javascript - 如何在 React 函数之外持久化变量?
- laravel - Bootstrap bootstrap.bundle.js 不适用于 Laravel 项目上的 Button Dropdown
- javascript - 正则表达式支持免费电话号码以及阿联酋号码
- javascript - JavaScript 递归 setTimeout() 几个小时后无法正常工作
- r - 从R中的GPS坐标列表创建最短路径
- angular - 角删除http请求
- docker-container - Connect local SQL Server database from the containerized Asp.net Core Application
- django - 如何为多个 Slug 编写 URL
- javascript - 应用程序组件的渲染渲染 hello 组件或者它到底做了什么?是 jsx 吗?
- python - QISKIT 错误 - numpy.ndarray 大小已更改,可能表示二进制不兼容。预期来自 C 标头的 88,从 PyObject 获得 80