多表联查搜索如何实现?

表结构如下图:

图片描述

        现在需要根据用户的输入内容,来从不同的表中查询内容,如何才可以快速有效的查出我想要的结果?

        我的想法是将三个表关联起来,通过case...when来根据flag的值来判断该从哪个表中拿数据,最终组成一个临时表,然后再从临时表中,根据用户输入的内容来筛选数据。

        请问是否还有其他更有效的思路可供参考?

阅读 2.2k
1 个回答

表1和表A和表B各关联一次,结果做union,代码大概如下:

select ta.*
from t1 join ta on t1.id_a = ta.id
where t1.flag = 'a'
union all
select tb.*
from t1 join tb on t1.id_b = tb.id
where t1.flag = 'b'
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题