主表A(a_id,a_title),a_id是主键,有三条数据,分别是
A1 , a1_title
A2 , a2_title
A3 , a3_title
子表B(b_id,a_id,b_content),b_id是B表主键,a_id是A表的主键
b1 , A1 , 111
b2 , A1 , 222
b3 , A1 , 333
b4 , A1 , 444
b5 , A2 , 111
b6 , A2 , 333
b7 , A3 , 111
b8 , A3 , 333
b9 , A3 , 444
主表A和子表B是1对多的关系,
现根据A1记录对应的B表的b_content字段,
查询出A2,A3对应B表数据的b_content字段匹配度,按匹配数量排序。
即A3对应的b_content字段与A1对应的b_content字段,有3个数完全匹配
A2对应的b_content字段与A1对应的b_content字段,有2个数完全匹配
要求排序为A3在A2前面。
请问这样的怎么用sql实现?
先联合查询,然后orderby外键的值就可以了。
select a_id,count(a_id) count
from B where a_id != A1 and content in
(select content from A a,B b where a.a_id = b.a_id and a.id = A1)
group by a_id order by count desc