MySQL:比较两个表,只找到第二个匹配列的匹配数据/过滤第一个表

时间:2017-04-03 09:52:48

标签: mysql

我的销售数据包含Cust_ID,Invoice_Date,Invoice,Item_Number(还有很多其他字段)。该表具有每个客户发票的多个记录,因为每个记录包含不同的Item_Number信息。我们将此表称为sales_main。

我有第二个表只包含上面提到的三个字段,即Cust_ID,Invoice_Date和Invoice。该表每个客户只包含一行。我们将此表称为sales_filter。

我想要做的主要是在第一个表上使用第二个表作为过滤器,以便仅保留sales_filter和sales_main中的Cust_ID,Invoice_Date和Invoice列的表sales_main(及其所有列)中的行。完全匹配。

因此,如果sales_filter的行包含:

" 1024"," 24/02 / 2016",533

和sales_main有四行匹配所有三个条件,所有四行都在结果集中返回。对于sales_main中与sales_filter中任何行中的所有三列完全匹配的任何其他行相同。

但我无法弄清楚要用它做什么代码!

1 个答案:

答案 0 :(得分:0)

您需要根据这3列加入这两个表,然后它将返回匹配条件

的所有记录
select * from sales_main sm join sales_filter sf on (sm.Cust_ID=sf.Cust_ID and sm.Invoice_Date=sf.Invoice_Date and  sm.Invoice=sf.Invoice)

您可以在选择

中选择您想要的字段