1.需求:
今天遇到一个业务需求:两张MySQL表做join,两个关联键是包含关系,SQL该怎么实现。
2.思路:
由于两个关联键是包含关系,那么首先想到的就是like模糊匹配。
通常我们见过的like语法都是类似 a like ‘%aa%’; 那么根据这个思路,我们如何实现两个字段模糊匹配呢?
3.方案:
原始表a:
原始表cp:
想要的结果:
select
a.*,
cp.*,
case when cp.config_name is not null then concat(class_lv1,'-',class_lv2) else '-' end as class
from
(
SELECT
config_name,
cluster
FROM pf_cost_daily_summary
WHERE day_id=20230608
group by day_id,hulk_id,config_name,cluster,cluster_path
)a
left join pf_cost_classproject_hdfs cp on a.cluster=cp.cluster and a.config_name like concat('%',cp.config_name,'%')
4.总结:
两个字段模糊匹配:
a.config_name like concat('%',cp.config_name,'%')