【发布时间】:2016-12-22 13:54:22
【问题描述】:
我有以下两张表,
表 1:
id document
--------------
A3 B2
A3 B400
A5 B100
A5 B500
A7 B200
A8 B6
A8 B2
A8 C1
A8 B3
表 2:
id name
--------------
A1 Jack
A2 Martin
A3 Jack
A4 Thomas
A5 Jack
A6 Thomas
A7 Thomas
A8 John
A9 John
A10 Kate
我的过滤器如下,应该比较 document 列并基于此列表进行过滤:
WHERE table1.document IN (B2,B400,B100,B500,B200,B6,B2,B3)
结果应该是这样的:
name freq
--------------
Jack 4
Thomas 1
John 3
解释:
首先,我过滤我在WHERE IN 子句中拥有的文档。然后查看table1中剩余文档id列对应的值,
在第二个表的第一列中查看 id,并获取该 ID 对应的 name 并将其放入我的结果表中。
比如A3重复了两次,它对应的name是Jack,所以到目前为止Jack在freq列中的值为3,但是由于下一个id在
我的 table1 是 A5,重复了两次,恰好也有 Jack 作为它的名字,所以 jack 将有 4 作为频率。
对于table1中的下一个值,A7的对应名称为Thomas,因为A7重复了一次,并且没有其他对应名称为Thomas的id
不在我的 table1 列表中,那么 Thomas 的频率为 1(我在 table1 中没有 A4,也没有 A6)。
在最后一个示例中,我在 table1 中重复了 4 次 A8,但是,由于我在 WHERE IN 中的列表不包含 C1,因此该条目将被过滤
并没有计算,所以我还剩下三个A8,名字是John,然后它的值是3。
这是demo 数据。
【问题讨论】: