查找相似/相关数据,按匹配计数排序

时间:2015-03-12 00:58:36

标签: mysql

我的数据分布在多个表中。每个表看起来像:

id | value

还有一张主表:

id | type

现在我想为给定的id选择所有id,在其中一个表中至少有一个值匹配,按匹配数排序,降序。

示例:

TableMaster (id,type):
1,typeA
2,typeA
3,typeA
4,typeA
5,typeB

TableA (id,value):
1,A
2,B
3,B
4,C
5,D

TableB (id,value):
1,Y
2,X
3,X
4,X
5,X

TableC (id,value):
1,K
2,L
3,L
4,L
5,M

id = 2 type = typeA 的有用sql语句返回:

id
3 (1 match in TableA B=B, 1 match in TableB X=X, 1 match in TableC L=L => 3 matches)
4 (1 match in TableB X=X, 1 match in TableC L=L => 2 matches)
不返回

id = 5,因为它是typeB。

是否有一种有效的方法来比较所有表而不使用每个表连接的子选择,如何计算匹配,所以我可以使用ORDER BY的值?

谢谢!

0 个答案:

没有答案