疫情中没事在家写点自己觉得有趣的东西,碰到了一个类似于链表查询的A表里面的值等于B表里面某个值
但是在不使用链表的情况下怎么获取A表中的数据B表中是否存在呢
矛盾点:a表中cate_id字段B表中也有cate_id字段
使用链表查询
select AA.*,count(BB.*) from a as AA left join b as BB on AA.cate_id =BB.cate_id
优化1双表列举,这里就不说了,这个效率真的低,类似于两个表数据都查出来,对结果处理
优化2:select *,(select count(1) as issetA from b where cate_id=`cate_id` limit 1 ) as issetA from a
你运行的时候可能会发现上面的sql报错,而且报的错误是cate_id不存在或者issetA 都为0
最终结果
select *,cate_id as acate_id,(select count(1) as issetA from b where cate_id=`acate_id` limit 1) as issetA from a
issetA就是b表中是否存在,如果B表中统计存在数量去掉limit 1