SQL问题,请教关联含逗号的值的表

有如下两张表,一张表是信息表TABLE1,有id和type两个字段:

img

另一张表是名称表TABLE2,有type和type_name两个字段:

img

注:两表里的TYPE可能会有一百多种,是否会影响?

现在想要关联TABLE2的type_name,得到如下的表,用SQL要如何实现?请教一下,非常感谢!

img


select * from tb1 as a cross join (select * from tb2) as b where instr(concat(',',a.tp,','),concat(',',b.tp,','))>0;

img

可以使用临时表或者自定义函数。

可以使用视图来保存关联后的结果,方便后续查询:

CREATE VIEW `table1_2_union_view` AS SELECT
t1.*,
group_concat( t2.type_name ) AS type_name 
FROM
    table1 AS t1
    CROSS JOIN ( SELECT * FROM table2 ) AS t2 
WHERE
    instr(
        concat( ',', t1.type, ',' ),
    concat( ',', t2.type, ',' ))> 0 
GROUP BY
    t1.id,
    t1.type;