首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >MySQL根据值位于不同行的B列中的值排除A列中的结果

问MySQL根据值位于不同行的B列中的值排除A列中的结果
EN

Stack Overflow用户
提问于 2020-09-30 10:10:29
回答 1查看 25关注 0票数 1

在我的工作中,我们的集合管理数据库(CMS)被导出到一个MySQL转储。由于CMS的结构,表中的多值字段在转储中被分割成单独的表,例如样本被分割成样本(单值字段仅从样本表)和specimens_mv (从样本表中分离出多值字段)。在我们的数据库中,您可以通过相关的材料字段链接共享数据的样本(例如,两个样本的收集器编号是相同的)。你必须进入每一个记录来进行两种组合(即在记录A中插入记录B和在记录B中插入记录A)。我在寻找不恰当地联系在一起的标本记录:

代码语言:javascript
复制
SELECT
    sp.specimen_num,
    sp.barcode AS barcode_1,
    sp.coll_name AS collector_1,
    sp.coll_num AS coll_num_1,
    mv.nomen_type_kind as type_2,
    sp2.specimen_num AS specimen_num_2,
    sp2.barcode AS barcode_2,
   sp2.COLL_NAME AS coll_name_2,
    sp2.COLL_NUM AS coll_num_2,
FROM
    specimens_mv AS mv
        JOIN
 specimens AS sp ON mv.specimen_num = sp.specimen_num
      JOIN
 specimens AS sp2 ON mv.ASSOCIATED_MAT_SPECIMEN_NUM = sp2.specimen_num
where sp2.coll_num != sp.coll_num;

问题是,这些成对的组合是相互作用的,通常有两个以上的样本相互联系在一起。

代码语言:javascript
复制
| specimen_num 1 | specimen_num 2 |
|----------------|----------------|
| 87969          | 87968          |
| 87969          | 87970          |
| 87970          | 87968          |
| 87970          | 87969          |

有什么建议可以消除两两重复吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-09-30 10:15:54

您只需更改有关联接上的不等式条件即可。也就是说,改变这一点:

代码语言:javascript
复制
where sp2.coll_num != sp.coll_num;

至:

代码语言:javascript
复制
where sp2.coll_num > sp.coll_num;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64135351

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档