我的数据分布在多个表中。每个表看起来像:
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的值?
谢谢!