繁体   English   中英

一个表的内部联接并防止重复?

inner join of one table and prevent duplicate?

提示:本站收集StackOverFlow近2千万问答,支持中英文搜索,鼠标放在语句上弹窗显示对应的参考中文或英文, 本站还提供   中文繁体   英文版本   中英对照 版本,有任何建议请联系yoyou2525@163.com。

我有一张桌子叫

使用以下列进行交易(已删除大量冗余数据)

trade_id,buyer_company_code,seller_company_code,legacy_trade_number。

我打算查询所有交易,其中某笔交易的buyer_company_code =另一笔交易的seller_company_code和该笔交易的seller_company_code =另一笔买家的buyer_company代码

我尝试使用查询生成以下屏幕截图

select * from trade tradetable1 inner join trade tradetable2
 on tradetable1.seller_company_code=tradetable2.buyer_company_code and tradetable1.buyer_company_code=tradetable2.seller_company_code
    and tradetable1.legacy_trade_number<tradetable2.legacy_trade_number

在此处输入图片说明

目前,它给我以下内容(来自一项交易的legacy_trade_number)和(来自另一项交易的legacy_trade_numbe)具有重复项(由于笛卡尔积)

5548 5554
5548 5555
5548 5556
5549 5554
5549 5555
5549 5556
5550 5554
5550 5555
5550 5556

但我要求它如下

5548 5554
5549 5555
5550 5556

如果两列没有重复值。 任何建议/提示都会有所帮助! 谢谢

1 个回复

如果您不想为legacy_trade_number列重复结果,则应该选择select真正需要的列,而不要选择*

select distinct tradetable1.legacy_trade_number from (
    select * from trade 
) tradetable1 
inner join ( 
select * 
from trade ) tradetable2 on tradetable1.seller_company_code=tradetable2.buyer_company_code 
    and tradetable1.buyer_company_code=tradetable2.seller_company_code
    and tradetable1.legacy_trade_number<tradetable2.legacy_trade_number

任何方式都可以使用简单的方法获得结果

select disticnt t1.legacy_trade_number 
from  trade  t1 
inner join trade t2 on on t1.seller_company_code=t2.buyer_company_code 
    and t1.buyer_company_code=t2.seller_company_code
    and t1.legacy_trade_number<t2.legacy_trade_number

在行级别评估重复项,因此..如果您需要其他列,则应选择所需的值,并使用聚集函数来减少无用的值

例如:使用聚合函数作为min(),您可以

select t1.legacy_trade_number, min(t1.col1), min(t2.coln)
from  trade  t1 
inner join trade t2 on on t1.seller_company_code=t2.buyer_company_code 
    and t1.buyer_company_code=t2.seller_company_code
    and t1.legacy_trade_number<t2.legacy_trade_number
  group by t1.legacy_trade_number
3 从2个表的内部联接结果创建一个新表

我在这里遇到了一些问题。 我想制作一个由其他表的某些部分组成的表,我尝试了此处提到的解决方案: 从内部联接创建mysql表 和 从选择创建一个新表? 在这个论坛上还有其他一些问题,但是没有一个对我有用。 因此,我的情况如下:我有2个表:1. tbl_stude ...

4 使用内部联接更新多个表[重复]

这个问题已经在这里有了答案: MySQL,用一个查询更新多个表 5个答案 我有2个表: Pur_Entry and Pur_order 我必须一次执行两个表中的' is_delete '更新。 有没有内部联接方法? ...

2017-08-28 12:52:37 2 624   mysql/ sql
5 内部联接有4个表创建重复

以上工作正常。 现在我有另一个表结果(resultId,runId,analyze,testname) 我还想在我的其他查询中包含testname,所以我补充说, 但是这个查询重复了记录。我猜它采取了一些交叉产品或其他东西。 有谁知道如何解决它? ...

8 防止联接表为空

人际关系 因此,促销通过联接表PromotionSweepstake具有has_many抽奖机会。 这是一个传统的数据库模式,因此命名可能看起来有些奇怪,并且遗漏了一些self.table_name ==和foreign_key的内容。 此应用程序的性质要求 ,对于promoti ...

10 如何基于另一个表具有的内部联接字段更新表?

我有两个表(日历和朋友)具有相同的id字段。 在这种情况下为dateid。 在日历表中,ID与实际日期相关,例如'02 -02-2019'.Friends表中有几次我遇到某个朋友的dateid及其ID。 我想更新一天中遇到的时间,但似乎无法只更新他,有一天我要更新所有日期的所有好友。到目前 ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2022 STACKOOM.COM